从long创建DateTime

时间:2018-01-26 07:40:04

标签: java datetime jodatime

我正在使用 jodatime lib来处理日期和时间戳。我目前在从long:

创建日期时间对象时遇到问题
DateTime e = new DateTime(new Long("5"));
System.out.println(e.toString(DateTimeFormat.forPattern("hh:mm:ss,SSS")));

打印

  

“01:00:00005”

到控制台。这不是我所期望的,那将是

  

“00:00:00005”

是否有人已经遇到过这个问题或者可以向我解释一下?

2 个答案:

答案 0 :(得分:0)

是因为你生活在UTC + 1时区吗? Unix时间纪元基于UTC,因为您处于UTC + 1时区,当您将长数设置为零时,它的00:00:00 UTC + 0 = 01:00:00 @ UTC + 1

要获得您想要的结果,您可以按照以下步骤创建日期时间:

DateTime dateTime = new DateTime(5L, DateTimeZone.UTC);
System.out.println(dateTime.toString(DateTimeFormat.forPattern("HH:mm:ss,SSS")));

https://en.wikipedia.org/wiki/Unix_time

答案 1 :(得分:0)

Java 9回答。

    Duration dur = Duration.ofMillis(5);
    String formattedDur = String.format(Locale.GERMANY, "%02d:%02d:%02d,%03d",
            dur.toHours(), dur.toMinutesPart(), dur.toSecondsPart(), dur.toMillisPart());
    System.out.println(formattedDur);

打印

  

00:00:00005

我正在为不使用Joda-Time的任何人以及任何准备继续前进的人输入此答案。 Joda-Time是一个基本完成的项目,没有预见到重大改进。那些人建议迁移到java.time

java.time.Duration不适合格式化,但随着Java 9中toXxxPart方法的引入,它变得更好。