Convertir l'horodatage au format de date normal
Dans mon application web, la date & le temps d'un utilisateur certaine activité est stocké(dans la base de données) comme un timestamp Long
qui à être affichée sur l'écran de l'utilisateur doit être converti en format de date/heure.
(En fait ma base de données Cassandra enregistre le timestamp du moment où un article a été écrit pour elle, comme une valeur de type long( microsecondes depuis 1970 ) que je vais utiliser pour trouver le temps de la correspondante de l'activité de l'utilisateur)
Je suis en utilisant JSF 2.0(+ primefaces) qui, je crois, a des convertisseurs qui peuvent être utiles pour cette conversion? Ou sinon, comment Comment puis-je, au mieux, de réaliser ces conversions?
source d'informationauteur Rajat Gupta
Vous devez vous connecter pour publier un commentaire.
Permettez-moi de proposer cette solution pour vous. Donc, dans votre managed bean, cela
dans votre JSF page, vous pouvez le faire (en supposant que
foo
est l'objet qui contient votretime
)Si vous avez plusieurs pages qui veulent utiliser cette méthode, vous pouvez mettre ceci dans un
abstract class
et votre managed bean étendre cetteabstract class
.EDIT: le temps de Retour avec le Fuseau horaire
malheureusement, je pense que
SimpleDateFormat
toujours le format de l'heure en heure locale, donc on ne peut pas utiliserSimpleDateFormat
plus. Donc, pour afficher l'heure dans le Fuseau horaire différent, nous pouvons le faireUne meilleure solution est d'utiliser
JodaTime
. À mon avis, cette API est beaucoup mieux que le Calendrier (un poids plus léger, plus rapide et de fournir plus de fonctionnalités). PlusCalendar.Month
deJanuary
est0
qu'à force de le développeur à ajouter1
pour le résultat, et vous avez du format de l'heure vous-même. À l'aide deJodaTime
vous pouvez fixer tout cela. Corrigez-moi si je me trompe, mais je pense queJodaTime
est incorporé dansJDK7
Ne sais pas si JSF fournit une fonctionnalité intégrée, mais vous pouvez utiliser
java.sql.Date
'constructeur pour convertir une date objet: http://download.oracle.com/javase/1.5.0/docs/api/java/sql/Date.html#Date(long)Alors vous devriez être en mesure d'utiliser de plus haut niveau de fonctionnalités fournies par Java SE, Java EE pour afficher et mettre en forme les extraits de date. Vous pourriez instancier un
java.util.Calendar
et de définir explicitement le temps: http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#setTime(java.util.Date)EDIT: Les composants JSF ne devrait pas prendre soin de la conversion. Votre couche d'accès aux données (couche de persistance) devrait s'occuper de cela. En d'autres termes, vos composants JSF ne doivent pas manipuler le
long
tapé attributs, mais seulement unDate
ouCalendar
tapé attributs.java.temps
L'extrait ci-dessus imprime:
“Noll” en Gaélique pour le mois de décembre, ce qui devrait rendre votre utilisateur heureux. Sauf qu'il n'y est peut-être très peu de personnes parlant le Gaélique vivant dans Tachkent, donc veuillez indiquer à l'utilisateur le bon fuseau horaire et les paramètres régionaux vous-même.
Je suis prise au sérieux que vous avez de microsecondes à partir de votre base de données. Si la deuxième précision est très bien, vous pouvez le faire sans
remainingMicros
et il suffit d'utiliser celui-argInstant.ofEpochSecond()
ce qui va rendre le code un couple de lignes plus courtes. DepuisInstant
etZonedDateTime
en charge d'une précision à la nanoseconde, j'ai trouvé ça plus correct de garder toute la précision de votre timestamp. Si votre timestamp était en millisecondes plutôt que de microsecondes (ils le sont souvent), vous pouvez simplement utiliserInstant.ofEpochMilli()
.Les réponses à l'aide de
Date
Calendar
et/ouSimpleDateFormat
étaient amende lorsque cette question a été posée il y a 7 ans. Aujourd'hui, les classes sont toutes dépassée depuis longtemps, et nous avons tellement mieux enjava.time
le moderne Java date et l'heure de l'API.Pour la plupart des utilisations, je vous recommande d'utiliser le haut-localisée formats comme je le fais dans le code. Vous pouvez expérimenter avec le passage
SHORT
LONG
ouFULL
pour le format de style. Yo peut même préciser style de format de la date et de l'heure de la journée séparément à l'aide d'une surchargeofLocalizedDateTime
méthode. Si un format spécifique est nécessaire (cela a été demandé dans une double question), vous pouvez avoir cela:À l'aide de ce module de formatage de la place, nous avons
Lien: Oracle tutoriel: Date Heure expliquant comment utiliser
java.time
.Pour afficher les zéros non significatifs en face d'heures, de minutes et de secondes d'utilisation ci-dessous code modifié. Le truc c'est que nous sommes de conversion (ou plus exactement la mise en forme d'entier en chaîne de sorte qu'il affiche zéro, le cas échéant :
Résultat serait : 00:01:30