我使用Noda Time,并且有以下代码:
var pattern = ZonedDateTimePattern.CreateWithInvariantCulture(
"yyyy-MM-dd HH:mm:ss z",
DateTimeZoneProviders.Tzdb);
var parsed = pattern.Parse("2017-11-05 01:00:00 America/Los_Angeles");
Console.WriteLine(parsed.Value);
这将导致一个
UnparsableValueException
,并显示以下信息:
问题在于,由于夏令时的影响,特定的时间可能会出现两次。在02:00时,时钟被调回一小时到01:00。NodaTime不知道字符串所指的01:00的哪个版本,因此抛出异常。目标时区存在歧义的本地日期/时间
对我来说,解析结果中的时间版本并不重要,我只是想避免异常,并获得尽可能接近实际的日期。多一小时或少一小时都可以。有什么更好的方法吗?
我唯一能想到的方法是拆分字符串并逐个解析部分,然后再添加一小时,但这感觉完全不对。是否有更好的解决方案?