У меня есть метод, который должен возвращать время начала рабочего дня, например. 9 утра из ZonedDateTime, что он принимает в качестве параметра:Как правильно установить компонент времени ZonedDateTime в Nodatime
public ZonedDateTime GetWorkStartTime(ZonedDateTime zdt) => (zdt.Zone.AtStartOfDay(zdt.Date).Date + WorkDayStartTime).InZone(zdt.Zone, CommonLenientResolver);
WorkDayStartTime
является new LocalTime(9, 0)
CommonLenientResolver
обычай распознаватель, увидеть реализацию на Comparing LocalDateTime for Different Time Zones in Nodatime
Так что для любого конкретного ZDT, я бы например, чтобы быть уверенным, что возвращаемое значение всегда равно 9AM дня, которое представляет параметр zdt.
Как указано в документации AtStartOfDay (...), если в полночь дня, когда часы не существуют (например, часы перемещаются вперед в полночь прямо к 1AM), Nodatime автоматически будет использовать следующий доступный экземпляр , 1 ЧАС НОЧИ. В моей текущей реализации я добавляю 9 часов в AtStartOfDay (...), поэтому, если начало дня - 1 утра, мой GetWorkStartTime (...) вернет 10 утра, что я хотел бы избежать.
Я использую Nodatime 1.3.1.