2015-10-30 5 views
2

Использование nodatime Как найти разницу между двумя объектами ZonedDateTime, особенно в часовых поясах ZonedDateTime.Использование nodatime Как найти разницу между двумя объектами ZonedDateTime

Edit - Пример:

Например, у меня есть две даты в часовом поясе позволяет использовать "Europe/Stockholm" время.

Они рассчитываются на сервере, местное время которого установлено на «America/Los_Angeles».

Я хочу получить число миллисекунд между двумя периодами, относящимися к DST, в часовой пояс «Европа/Стокгольм», игнорируя местное время сервера. Это связано с тем, что локальное время сервера может измениться при развертывании на другой сервер, и я не хочу обновлять код, если это произойдет.

+0

checkout @JonSkeet blog http://codeblog.jonskeet.uk/category/nodatime/ – MethodMan

+1

Не могли бы вы прояснить свой вопрос? Если вы хотите проверить их свойства часового пояса, вы можете использовать свойство 'Zone' экземпляров, которые возвращают' DateTimeZone'. –

+1

Вы хотите, чтобы истекшее время между двумя основными моментами? Или вы хотите разницу в настенных часах? –

ответ

3

Попробуйте это:

ZonedDateTime t1 = LocalDateTime.FromDateTime(startTime).InUtc(); 
ZonedDateTime t2 = LocalDateTime.FromDateTime(endTime).InUtc(); 
Duration diff = t2.ToInstant() - t1.ToInstant(); 
+1

Это начинается с двух значений 'DateTime', что isn ' что OP интересует ... –

+1

Ну, мы можем предположить, что у ОП уже есть 't1' и' t2', а последняя строка правильна в отношении получения прошедшей продолжительности между ними, хотя мы все еще не уверен, что это то, о чем просит ОП. –

+0

Это то, на что я надеялся, что я просто не понял проблему, достаточно хорошо, когда задал вопрос – Dizzle

0

«Между двумя периодами» не имеет особого смысла, поскольку ZonedDateTime не является периодом. Если у вас есть два значения ZonedDateTime, вам, вероятно, просто нужно вызвать ToInstant на обоих из них, а затем вычесть одно мгновение из другого, чтобы получить продолжительность ... »

Этот комментарий от Jon Skeet отвечает на вопрос, вызывая ToInstant позволяет использовать вычитание [-] и добавлять операторы [+].

+0

Если вы собираетесь отвечать самим себе, это по крайней мере поможет, если вы уточните вопрос, чтобы уточнить его. Тогда я подозреваю, что лучше ответить, чем это можно было бы написать ... –

Смежные вопросы