Problème de Calendrier.get(Calendar.À l'HEURE)
J'essaie d'afficher dans un TextView lors de ma dernière mise à jour de l'application (par exemple, "Dernière mise à jour à 12:13). Je suis en train d'utiliser un Calendrier de l'instance et j'ai pensé que j'ai bien compris, mais il me semble avoir de la difficulté. Je sais que pour obtenir un exemple, j'ai utiliser la méthode du Calendrier.getInstance(). Et puis pour obtenir l'heure et la minute, j'ai été en utilisant le Calendrier.get(Calendar.À l'HEURE) et le Calendrier.get(Calendar.MINUTE). Ma minute champ retourne correctement, mais le Calendrier.L'HEURE est de retour à l'heure sur une horloge de 24 heures et je veux une horloge de 12 heures. J'ai pensé HOUR_OF_DAY était l'horloge de 24 heures. Où vais-je tort?
Voici le code que j'utilise:
Calendar rightNow = Calendar.getInstance();
mTv.setText("Refreshed! Last updated " +
rightNow.get(Calendar.HOUR) + ":" +
rightNow.get(Calendar.MINUTE) + ".");
mTv est mon TextView que je suis à jour. Merci pour toute aide.
Aussi, il serait idéal si je pouvais dire "Dernière mise à jour il ya 5 minutes." au lieu de "Dernière mise à jour à 12:13pm". Mais je ne suis pas sûr que le meilleur moyen d'avoir cette mise à jour chaque minute sans épuiser les ressources ou la batterie...?
OriginalL'auteur Jon Rubins | 2011-08-08
Vous devez vous connecter pour publier un commentaire.
Je vous recommande d'utiliser SimpleDateFormat en combinaison avec la classe Date pour la mise en forme du moment:
Brève explication sur la façon dont il fonctionne:
Vous créez un SimpleDateFormat objet et passer une Chaîne à la construtor qui raconte comment le format de l'heure/date de l'objet qui est passée à la fonction format ().
Il y a beaucoup de constantes et de lettres qui représentent un moment particulier de l'objet (par exemple, secondes, AM/PM marqueur, .. voir la de documentation de classe pour la liste complète).
"Kc:mm" à "11:42 AM" format - de l'une ou des deux chiffres de l'heure (en fonction de sa valeur), dans un format 12 heures, toujours à deux chiffres pour les minutes (mm) et AM ou PM (a), en fonction du temps.
Après vous avez fait cela, il suffit de passer un objet Date, à la fonction format (), et vous obtiendrez une chaîne formatée. Notez qu'une Date a un seul point dans le temps, si vous créez à partir du constructeur sans arguments ("= new Date ()"), il utilise l'heure actuelle. Si vous avez besoin d'un autre temps, vous pouvez passer une longue discussion avec le millis, que vous pouvez obtenir à partir de l'Agenda.getTimeInMillis().
Que de la mise en œuvre de la "mise à jour XY minutes il y a la fonction" - oui, vous auriez à mettre à jour ce à chaque minute et vous devez calculer la différence entre la mise à jour et à l'heure actuelle. Je dirais que c'est pas la peine de partir d'une batterie et de travail en perspective.
Si votre application utilise la norme de courts cycles de mise à jour (par exemple toutes les heures ou quelque chose le long de ces lignes) et n'est pas en plein écran, l'utilisateur dispose d'une horloge visible sur le haut/bas de son écran. Si il veut vraiment vérifier combien de temps il a été depuis la mise à jour, il peut faire un bref coup d'œil, et de comparer (surtout juste en minutes ou en heures/minutes). Et à mon avis c'est pas inconvinience pour un utilisateur, au moins il ne serait pas pour moi. Je venais tout juste de comparer sans penser à ce sujet. Mais j'ai tendance à tuer les applications laquelle les déchets ma batterie pour pas de raison.
Notez également que pas tout le monde utilise un format de 12 heures. Pour obtenir une version localisée du format de l'heure en fonction de paramètres utilisateurs/pays DateFormat.getTimeInstance(). Cette fonction retourne une DateFormat, mais cela fonctionne comme les SimpleDateFormat, il suffit de passer un moment de format().
OriginalL'auteur
Utilisation De L'Application Calendrier.HOUR_OF_DAY pour 24 heures
OriginalL'auteur Aldasa
Vous pouvez mettre à jour
editText
chaque minute, à l'aide d'un fil comme suitOriginalL'auteur Sandy
Bien, De Calendrier.get(Calendar.À l'HEURE) devrait être de retour de 12 heures de temps, mais si vous voulez produire votre un peu plus sympa de texte, vous pouvez utiliser le TimeUnit classe pour l'analyse de la simplicité.
OriginalL'auteur Brent