2016-07-09 2 views
1

Мне нужно вычислить количество дней между двумя датами, используя NodaTime, и сделать это в часовом поясе.Как получить количество дней между двумя датами в nodatime

Конечное время - это дата, основанная на предполагаемом времени полуночи в конце дня. Эта дата находится в часовом поясе.

Время начала - это текущее время, но я передаю его в функцию, чтобы функция проверялась.

Я пробовал использовать Период, который кажется очевидным ответом, но Период слишком гранулирован на одном конце (когда мы находимся в конце дня) и не достаточно гранулирован, когда мы находимся на расстоянии более 1 месяца.

Так что если сейчас 9 июля, 17:45 в Америке/Торонто, а время окончания - 1 сентября, 00:00:00, то я хотел бы иметь возможность рассчитать 54 дня. (при условии, что я правильно подсчитал количество дней в календаре :):

Я полагал, что мне придется самому справляться с проблемой суточного дня, но это меня удивило, когда мне нужно было выяснить, как обращаться с большим, чем месячная проблема.

Есть ли очевидный способ получить количество дней между двумя временами от NodaTime? Я имею это до трех строк кода, используя классы DateTime и TimezoneInfo .Net, но я хочу перейти в NodaTime по всем причинам, указанным на сайте.

Благодаря

ответ

3

я должен был прочитать раздел Арифметика документы более внимательно, прежде чем отправлять.

Вы можете указать, какой блок вы хотите, чтобы результат математики находился с третьим параметром. Вот что мне нужно:

Period timeLeft = Period.Between(nowInTz.LocalDateTime, endDate, PeriodUnits.Days); 

это из документации: http://nodatime.org/unstable/userguide/arithmetic.html

Надеется, что это помогает кому-то еще в будущем.

+0

Следует отметить, что если вы спросите дни и есть один неполный день, вы получите период со всеми нулями. Другие значения, например, часы не заполняются. –

+0

Вы всегда можете запросить период с единицами времени + дни, если последняя часть является проблемой для вас. –

+0

Ах, я могу или PeriodUnits. В этом есть смысл. Благодарю. –