【发布时间】:2015-11-30 10:16:23
【问题描述】:
我使用以下代码来检查 joda 的 DateTime 和 java.util.Calendar 之间的一致性。这个结果是正确的,但是如果我将 2000 年更改为 1900 年,那么我将得到 2 个不同的结果。这是一个错误还是其他原因?
Calendar c = Calendar.getInstance();
c.set(1900,0,1,0,0,0); // Calendar's month is 0 based
c.set(Calendar.MILLISECOND, 0);
System.out.println(c.getTimeInMillis() / 1000);
DateTime dt = new DateTime(1900,1,1,0,0,0); // joda's month is 1 based
System.out.println(dt.getMillis() / 1000);
这是输出
-2209017600
-2209017943
【问题讨论】:
-
介意展示你具体得到的结果吗?
-
@Ambrish:不——Joda 时间的月份是从 1 开始的,而不是从 0 开始的。
-
请注意,到目前为止您提供的代码甚至无法编译为 Java。如果您提供一个简短但完整的示例(包括结果),如 Java,将会有所帮助。
-
我得到了正确的结果:Calendar c = Calendar.getInstance(); c.set(2000, 0, 1, 0, 0, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(c.getTimeInMillis() / 1000); DateTime dt = new DateTime(2000, 1, 1, 0, 0, 0); System.out.println(dt.getMillis() / 1000);
-
同意@JonSkeet。我只是对你的意思做了一个最好的猜测,测试了它并得到了匹配的答案,所以很想看看你实际写了什么以及你得到的结果。