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