Próbuję przekonwertować długą wartość ( liczbę milisekund, które upłynęły od 1/1/1970 tj. Epoka ) na czas formatu h:m:s:ms
.
Długą wartość, której używam jako znacznika czasu, otrzymuję z pola timestamp
zdarzenia rejestrowania z log4j.
Do tej pory próbowałem następujących rzeczy i kończy się to niepowodzeniem:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
ale otrzymuję nieprawidłową wartość:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
Jak mam się do tego zabrać?
SimpleDateFormat
, użyj importu w następujący sposób:import java.text.*;
java.util.Date
,java.util.Calendar
ijava.text.SimpleDateFormat
są teraz starsze , zastąpione przez klasy java.time wbudowane w Javę 8 i nowsze. Zobacz samouczek firmy Oracle . Zobacz: stackoverflow.com/a/4142428/642706źródło
Pokażę ci trzy sposoby (a) uzyskania pola minut z długiej wartości i (b) wydrukowania go w wybranym formacie daty. Jeden używa java.util.Calendar , inny używa Joda-Time , a ostatni używa frameworka java.time wbudowanego w Javę 8 i nowsze.
Struktura java.time zastępuje stare, dołączone klasy data-czas i jest inspirowana przez Joda-Time, zdefiniowaną przez JSR 310 i rozszerzoną przez projekt ThreeTen-Extra.
Framework java.time jest najlepszym rozwiązaniem w przypadku używania języka Java 8 i nowszych. W przeciwnym razie, na przykład w systemie Android, użyj Joda-Time. Klasy java.util.Date/.Calendar są notorycznie kłopotliwe i należy ich unikać.
java.util.Date i .Calendar
Joda-Time
Wynik:
java.time
źródło
DateTimeZone
obiekt. W ten sposób:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Możliwe jest użycie apache commons (commons-lang3) i jego klasy DurationFormatUtils.
Na przykład:
Mam nadzieję, że to pomoże ...
źródło
źródło
TimeUnit.MILLISECONDS.toSeconds()
na przykład konwertuje milisekundy na ten sam czas trwania w sekundach lub pozostałe sekundy po odjęciu godzin i minut? Rozwiązanie wymaga tego drugiego.źródło
Robić
da ci godziny, a nie minuty. Próbować:
a otrzymasz taką samą odpowiedź jak
źródło
Spróbuj tego:
źródło
źródło