java - Joda-Time 奇怪的时刻

标签 java date jodatime

我正在尝试初始化 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/

相关文章:

java - Joda-Time 库指定 mili 秒精度

java - 使用 getSystemResource 从 servlet 访问文件

java - SWT 表是否发出列创建/删除事件?

PHP Date - 如何添加一个字符串来分隔日期和时间

javascript - VueJS 响应式日期对象

java - 时间和第二期显示 1 :10 instead of 13:10

Java 时间戳 : Joda vs Date vs Long

java - 覆盖和过载的观点

java - 如何修改camel Exchange并发送

php - PHP strtotime 的奇怪日期问题