Ich versuche, einen langen Wert ( Anzahl der Millisekunden, die seit dem 1.1.1970, dh der Epoche, vergangen sind ) in die Formatzeit umzuwandeln h:m:s:ms
.
Den langen Wert, den ich als Zeitstempel verwende, erhalte ich aus dem Feld timestamp
eines Protokollierungsereignisses von log4j.
Bisher habe ich Folgendes versucht und es schlägt fehl:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
aber ich bekomme einen falschen Wert:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
Wie gehe ich vor?
SimpleDateFormat
, verwenden Sie den Import wie folgt:import java.text.*;
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle . Siehe: stackoverflow.com/a/4142428/642706quelle
Ich zeige Ihnen drei Möglichkeiten, um (a) das Minutenfeld aus einem langen Wert zu erhalten und (b) es mit dem gewünschten Datumsformat zu drucken. Man verwendet java.util.Calendar , ein anderer verwendet Joda-Time und der letzte das in Java 8 und höher integrierte java.time-Framework.
Das java.time-Framework ersetzt die alten gebündelten Datums- und Uhrzeitklassen und ist von Joda-Time inspiriert, definiert durch JSR 310 und erweitert durch das ThreeTen-Extra-Projekt.
Das java.time-Framework ist der richtige Weg, wenn Sie Java 8 und höher verwenden. Verwenden Sie andernfalls wie Android Joda-Time. Die Klassen java.util.Date/.Calendar sind notorisch problematisch und sollten vermieden werden.
java.util.Date & .Calendar
Joda-Zeit
Ausgabe:
java.time
quelle
DateTimeZone
Objekt. So:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Es ist möglich, Apache Commons (commons-lang3) und seine DurationFormatUtils-Klasse zu verwenden.
Beispielsweise:
Hoffe es kann helfen ...
quelle
quelle
TimeUnit.MILLISECONDS.toSeconds()
zum Beispiel convert Millisekunden auf die gleiche Dauer in Sekunden oder die verbleibenden Sekunden nach Stunden und Minuten abgezogen? Die Lösung erfordert letzteres.quelle
Tun
gibt Ihnen Stunden, nicht Minuten. Versuchen:
und Sie werden am Ende die gleiche Antwort erhalten wie
quelle
Versuche dies:
quelle
quelle