如何以更简明的方式获取代表当前日期开始和结束的ZonedDateTime(s),并在代码运行的系统上设置时区?
以下代码是否过于复杂?
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
。例如,在巴西的夏令时前向转换中,时间从晚上11:59到凌晨1点,没有12:00 am。在这种情况下,InZoneStrictly
会抛出异常。如果我正确地阅读文档,InZoneLeniently
在将12am的LocalDateTime转换为1am时会继续执行。同样,在向后转换时,时间从晚上11:59到晚上11点,有两个11:59 pm。InZoneLeniently
选择后面的那个。 - Mike Zboray