2016-10-08 1 views
1

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

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. Что я здесь делаю неправильно? Благодаря!

+0

Период периода = новый Период (dtTo, dtFrom); кажется, у вас неправильный порядок здесь, попробуйте обменять dtTo и dtFrom. – Okas

ответ

2

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

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

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

+0

Да, это сработало отлично. Наверное, мне нужна контрольная точка для сравнения двух раз. Благодарим за помощь @Meno –