我正在处理与此处要求的内容非常相似的内容 - compare Joda-Time time zones,但它似乎不适用于我。比较两个Joda-Time DateTime对象
这里有一段代码,我正与测试Joda-TimeDateTime -
DateTime estDT = new DateTime(DateTimeZone.forID("America/Puerto_Rico")).withMillisOfSecond(0);
DateTime londonDT = new DateTime(DateTimeZone.forID("Europe/London")).withMillisOfSecond(0);
System.out.println("Comparison " + londonDT.isBefore(estDT));
System.out.println("Comparison " + londonDT.isAfter(estDT));
有趣的是,我从上面这两种系统输出语句“假”。任何人都可以请解释什么是做这种比较的正确方法?
技术上,londonDT代表了片刻后,* * estDT作为宇宙的时间轴上的点。两行独立的代码意味着两个独立的计算机时钟采样,所以第二行比第一行晚。 DateTime的分辨率为毫秒,所以如果这两行代码恰好在计算机时钟的同一毫秒内执行,那么它们将彼此相等。这是纯粹的运气(机会)。根据Java线程在执行期间是否延迟/挂起,或者如果它运行在较慢的计算机上,这两个DateTime可能会有所不同。 –
我们都有点太强大了。考虑到调用withMillisOfSecond(0),这两个*可能*表示同一时刻。但是,如果它们碰巧在不同的秒数上执行(例如,millis = 999和millis = 0),它们可能会有所不同。如果实际上需要相同的时间,那么withZone()方法比获得两次瞬间更可靠。然而,更可能的是OP需要两个不同的实例,作为输入提供。 –