我正在尝试初始化 Joda-Time DateTime时间为 12:00 的对象如下是我执行此操作的方法:
public static final long MINUTE = 60 * 1000;
public static final long HOUR = 60 * MINUTE;
DateTime defaultDate = new DateTime(HOUR * 12);
System.out.print("the hour is: " + defaultDate.getHourOfDay()) // getting 14
为什么我得到的是 14 而不是 12?也许妈妈没有教我如何读时钟吧?!
最佳答案
您指定的是自 Unix 纪元(UTC 午夜)以来的毫秒数。
但是,您在 DateTime
中隐式使用系统默认时区,我怀疑在 Unix 纪元,您的系统时区是 UTC+2。
如果你想使用特定的时区,你可以在构造函数中传递它:
DateTime defaultDate = new DateTime(HOUR * 12, DateTimeZone.UTC);
此外,您可以使用 DateTimeConstants.MILLIS_PER_HOUR
或使用 java.util.concurrent.TimeUnit
,而不是使用自己的常量。用于转换。
关于java - Joda-Time 奇怪的时刻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21524598/