我正在使用 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”
是否有人已经遇到过这个问题或者可以向我解释一下?
答案 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")));
答案 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
方法的引入,它变得更好。