Подтвердить что ты не робот

Сравнение двух объектов Joda-Time DateTime

Я имею дело с чем-то очень похожим на то, что было задано здесь - сравнить часовые пояса 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. Может кто-нибудь объяснить, что будет правильным способом сделать это сравнение?

4b9b3361

Ответ 1

Вы создаете два экземпляра DateTime, которые, возможно, представляют один и тот же момент времени, но с разными часовыми поясами. Ни до, ни после другого.

Часовой пояс влияет только на то, как методы даты и времени, такие как getHourOfDay(), преобразуют момент времени.

Ответ 2

isAfter и isBefore сравнивают даты на миллис (без учета часового пояса).

В вашем примере даты имеют равные миллисы.

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

напечатает true.

Выражения

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

равны

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