Я пытаюсь преобразовать длинное значение ( количество миллисекунд, прошедших с 01.01.1970, т.е. эпоху ) во время формата h:m:s:ms
.
Длинное значение, которое я использую в качестве метки времени, я получаю из поля timestamp
события регистрации от log4j.
До сих пор я пробовал следующее, и это не удалось:
logEvent.timeStamp/ (1000*60*60)
TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
но получаю неверное значение:
1289375173771 for logEvent.timeStamp
358159 for logEvent.timeStamp/ (1000*60*60)
21489586 for TimeUnit.MILLISECONDS.toMinutes(logEvent.timeStamp)
Как мне это сделать?
SimpleDateFormat
используйте импорт следующим образом:import java.text.*;
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
, теперь являются устаревшими , вытесненными классами java.time, встроенными в Java 8 и более поздних версий . См. Учебник Oracle . См .: stackoverflow.com/a/4142428/642706источник
Я покажу вам три способа (а) получить поле минут из длинного значения и (б) распечатать его, используя нужный формат даты. Один использует java.util.Calendar , другой использует Joda-Time , а последний использует структуру java.time, встроенную в Java 8 и новее.
Фреймворк java.time заменяет старые связанные классы даты и времени и основан на Joda-Time, определенном JSR 310 и расширенном проектом ThreeTen-Extra.
Фреймворк java.time - лучший вариант при использовании Java 8 и новее. В противном случае, например Android, используйте Joda-Time. Классы java.util.Date/.Calendar, как известно, проблематичны, и их следует избегать.
java.util.Date и .Calendar
Joda времени
Вывод:
java.time
источник
DateTimeZone
объект. Как это:new DateTime( timestamp, DateTimeZone.forID( "America/Montreal" ) )
Можно использовать apache commons (commons-lang3) и его класс DurationFormatUtils.
Например:
Надеюсь, это поможет ...
источник
источник
TimeUnit.MILLISECONDS.toSeconds()
Преобразует ли , например, миллисекунды в ту же продолжительность в секундах или в оставшиеся секунды после вычитания часов и минут? Решение требует последнего.источник
дела
даст вам часы, а не минуты. Пытаться:
и вы получите тот же ответ, что и
источник
Попробуй это:
источник
источник