Попытка найти разницу во времени в Joda Time между 2 объектами DateTime

Я пытаюсь найти разницу между 2 раза, используя Joda Time. Я попытался использовать некоторые примеры здесь и не могу получить значение для возврата. Вот что я попробовал: где время в формате, подобном 17:23, а переменные "до" и "от" - это часовые пояса, такие как Америка / Лос-Анджелес или Европа / Лондон

    DateTime dtFrom = DateTime.now()
    DateTime dtTo = new DateTime(dtFrom.withZone(DateTimeZone.forID(to)));
    //calculate time difference
    Period period = new Period(dtTo, dtFrom) ;
    Minutes minutes = Minutes.minutesBetween(dtFrom, dtTo);
    long diffInMillis = dtFrom.getMillis() - dtTo.getMillis();

Я пытался использовать разные методы для сравнения этих двух и всегда не возвращал значения... точка возвращает PT0S, минуты возвращают PT0M, а diffInMillis возвращает 0. Что я здесь не так делаю? Спасибо!

1 ответ

Решение

Вы используете метод withZone(), который определен для сохранения момента (POSIX) в миллисекундах с 1970-01-01T00:00Z. Так dtFrom а также dtTo имеют одно и то же мгновенное значение, означающее, что они описывают одно и то же глобальное время, хотя их местное представление времени отличается из-за разных часовых поясов.

Результат: разница между двумя одинаковыми моментами точно равна нулю независимо от того, какую единицу времени вы используете.

Однако, если вы заинтересованы в разнице местного времени, пожалуйста, определите разницу смещения зоны, например, используя метод getOffset ().

Другие вопросы по тегам