Какой правильный и более сжатый способ получить ZonedDateTime (ы), которые представляют начало и конец текущего дня в часовом поясе, установленном в системе, на которой выполняется код ?Noda Time - начало/конец дня с зоной
Не слишком ли сложный код?
ZonedDateTime nowInZone = SystemClock.Instance.Now.InZone(DateTimeZoneProviders.Bcl.GetSystemDefault());
ZonedDateTime start = new LocalDateTime(nowInZone.Year, nowInZone.Month, nowInZone.Day, 0, 0, 0).InZoneStrictly(DateTimeZoneProviders.Bcl.GetSystemDefault());
ZonedDateTime end = new LocalDateTime(nowInZone.Year, nowInZone.Month, nowInZone.Day, 23, 59, 59).InZoneStrictly(DateTimeZoneProviders.Bcl.GetSystemDefault());
Учитывая эти значения, мне нужно проверить, существует ли между ними другое ZonedDateTime.
Вместо этого вы можете использовать 'InZoneLeniently'. Например, Бразилия, по ее переходу на переход на DST, идет с 11:59 вечера до 1 часа ночи. Нет 12:00. 'InZoneStrictly' будет бросать в этом случае. 'InZoneLeniently' перейдет к 1am при преобразовании LocalDateTime 12am (если я правильно читаю документы). Точно так же на обратном переходе он идет с 23:59 до 23:00. Есть два 11:59 вечера. 'InZoneLeniently' выбирает более поздний. –
@mikez - Хороший вопрос о Бразилии. Это уже охвачено методом, который я продемонстрировал. Благодарю. –