Попытка найти разницу во времени в 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 ().