比较两个 Joda-Time DateTime 对象

2022-09-01 05:44:26

我正在处理与这里提出的问题非常相似的事情 - 比较Joda-Time时区,但它似乎不适合我。

这是一段代码,我正在测试Joda-Time DateTime -

 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)); 

有趣的是,我从上面的两个sysout语句中都得到了“假”。任何人都可以解释一下进行这种比较的正确方法是什么?


答案 1

isAfterisBefore 方法按 millis 比较日期(忽略时区)。

在您的示例中,日期具有相等的 millis。

System.out.println(londonDT.getMillis() == estDT.getMillis());  

将打印 .true

表达 式

londonDT.isBefore(estDT) 
londonDT.isAfter(estDT)

等于

londonDT.getMillis() < estDT.getMillis()  
londonDT.getMillis() > estDT.getMillis()

答案 2

您正在创建两个 DateTime 实例,它们可能表示相同的时间时刻,但具有不同的时区。两者都不在另一个之前或之后。

时区只是影响日期/时间方法(如及时转换即时)的方式。getHourOfDay()


推荐