Matin, midi, soir, nuit message basé sur le Temps en java
Ce que je suis en train de faire::
Afficher un message basé sur
- Bon matin (12h-12h)
- Bonne après midi (12h -4h)
- Bonne soirée (4h à 9h)
- Bonne nuit ( de 9 heures du soir à 6 heures du matin)
CODE::
J'ai utilisé le format 24-heures pour obtenir cette logique
private void getTimeFromAndroid() {
Date dt = new Date();
int hours = dt.getHours();
int min = dt.getMinutes();
if(hours>=1 || hours<=12){
Toast.makeText(this, "Good Morning", Toast.LENGTH_SHORT).show();
}else if(hours>=12 || hours<=16){
Toast.makeText(this, "Good Afternoon", Toast.LENGTH_SHORT).show();
}else if(hours>=16 || hours<=21){
Toast.makeText(this, "Good Evening", Toast.LENGTH_SHORT).show();
}else if(hours>=21 || hours<=24){
Toast.makeText(this, "Good Night", Toast.LENGTH_SHORT).show();
}
}
Question:
- Est-ce ce qui est la meilleure façon de le faire, Si non quelle est la meilleure façon
hors-sujet la note, ne doivent pas être ET && , vous utilisez OU||, qui entraînera tous les cas (heures >= 1) chute dans Good Morning cas?
Vous devriez savoir, que les heures sont dans la gamme entre
J'ai mis à jour la réponse à prendre en compte 12:59.
Vous devriez savoir, que les heures sont dans la gamme entre
0
et 23
: getHours()
.J'ai mis à jour la réponse à prendre en compte 12:59.
OriginalL'auteur Devrath | 2014-12-21
Vous devez vous connecter pour publier un commentaire.
Vous devriez faire quelque chose comme:
Je voudrais ajouter un
else
cas en bas pour attraper tous les imprévus de la valeur (défensive de programmation).Exactement. Même si elle en informe votre équipe de soutien d'un étrange cas de bord. La clé est de ne pas laisser ce plantage de l'application, car il n'est pas essentiel à la mission.
getInstance(); besoin de l'api android 24.
OriginalL'auteur SMA
Je voudrais raccourcir votre
if/elseif
déclaration:OriginalL'auteur Konstantin Yovkov
java.temps
Je vous conseille d'utiliser Java 8 LocalTime.
Peut-être créer une classe pour gérer votre temps de la journée le problème.
between
test prédicat doit être( ! now.isBefore( start ) )
pour gérer le moment où maintenant eststart
.Votre totalement droit. Merci pour la nuance
Pas sûr si cela est techniquement nécessaire, mais je voudrais mettre des parenthèses autour de ce premier alinéa de l'être en sécurité et d'être claire en ce qui concerne l'effet de la
NOT
“!”.OriginalL'auteur Yoshua Nahar
Vous de déterminer si elle est dans le premier intervalle, puis tous les autres intervalles dépend de la limite supérieure. Donc, vous pouvez la rendre encore plus courte:
almas shaikh .... pouvez-vous modifier votre réponse pour l'optimisation, comme
user987339
suggéré ? ........ @ [+1] pouruser987339
pour l'optimisationalmas cheikh vous avez eu raison. J'ai mis à jour la réponse pour le cas de l'12:59
Eh bien, il n'est pas bien, que je n'aurez pas de salut si
hours
est0
.vous avez eu raison!
OriginalL'auteur user987339
essayer ce code(obtenir des heures et obtenir des minutes de méthodes dans la classe Date sont obsolètes.)
OriginalL'auteur m2k_72
À l'aide de Time4J (ou Time4A sur Android) permet aux solutions suivantes qui n'ont pas besoin de si-sinon-déclarations:
Il y a aussi un autre modèle de base de façon à laisser les paramètres régionaux de décider, de manière standard, basé sur la CLDR de données format de l'heure de l'horloge:
Le seul autre bibliothèque connu pour moi qui peut le faire aussi (mais de façon un peu maladroite) est ICU4J.
OriginalL'auteur Meno Hochschild
Pour quiconque est à la recherche pour les dernières Kotlin syntaxe pour @SMA réponse, ici est la fonction d'assistance :
OriginalL'auteur Vishal Sonawane
Quand j'écris
Je n'ai pas eu de sortie et qu'il n'affiche pas d'erreur. Juste le
timeOfDay
n'obtiendrez pas attribué aucune valeur dans le code. J'ai senti que c'était à cause d'une threading toutCalendar.getInstance()
est exécutée. Mais quand je me suis effondrée les lignes, il a travaillé pour moi. Voir le code suivant:OriginalL'auteur SREE
OriginalL'auteur Sanjay Hadiya