J'essaye de convertir une valeur longue ( nombre de millisecondes écoulées du 1/1/1970 ie Epoch ) en temps de format h:m:s:ms
.
La valeur longue que j'utilise comme horodatage, j'obtiens du champ timestamp
d'un événement de journalisation de log4j.
Jusqu'à présent, j'ai essayé ce qui suit et cela échoue:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
mais j'obtiens une valeur incorrecte:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
Comment dois-je procéder?
SimpleDateFormat
, utilisez l'importation comme suit:import java.text.*;
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont maintenant héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir le didacticiel d'Oracle . Voir: stackoverflow.com/a/4142428/642706la source
Je vais vous montrer trois façons de (a) obtenir le champ des minutes à partir d'une valeur longue et (b) de l'imprimer en utilisant le format de date souhaité. L'un utilise java.util.Calendar , l'autre utilise Joda-Time et le dernier utilise le framework java.time intégré à Java 8 et versions ultérieures.
Le framework java.time supplante les anciennes classes date-heure groupées et s'inspire de Joda-Time, défini par JSR 310 et étendu par le projet ThreeTen-Extra.
Le framework java.time est la voie à suivre lors de l'utilisation de Java 8 et versions ultérieures. Sinon, comme Android, utilisez Joda-Time. Les classes java.util.Date/.Calendar sont notoirement gênantes et doivent être évitées.
java.util.Date et .Calendar
Joda-Time
Production:
java.time
la source
DateTimeZone
objet. Comme ça:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Il est possible d'utiliser apache commons (commons-lang3) et sa classe DurationFormatUtils.
Par exemple:
J'espère que cela peut aider ...
la source
la source
TimeUnit.MILLISECONDS.toSeconds()
exemple, convertit-il les millisecondes en la même durée en secondes ou les secondes restantes après avoir soustrait des heures et des minutes? La solution nécessite ce dernier.la source
Faire
vous donnera des heures, pas des minutes. Essayer:
et vous vous retrouverez avec la même réponse que
la source
Essaye ça:
la source
la source