我试图运行此代码:
_deviceTimeZone.GetUtcOffset(systemNow.ToDateTimeOffset()).TotalMilliseconds
但有例外
未处理的异常:System.NotImplementedException:方法或 操作没有实现。在System.TimeZoneInfo.GetUtcOffset (DateTimeOffset dateTimeOffset)[0x00000] in /Users/builder/data/lanes/2098/3efa14c4/source/mono/mcs/class/corlib/System/TimeZoneInfo.cs:669
我找到了带有GetUtcOffset和NotImplementedException的单一来源:mono github。
如果TimeZoneInfo无法执行此操作,我如何获得时区的utc偏移?
答案 0 :(得分:0)
mono似乎确实已实现GetUtcOffset(DateTime dateTime)
。那你为什么不用它呢:
_deviceTimeZone.GetUtcOffset(systemNow.ToDateTimeOffset().DateTime).TotalMilliseconds;
答案 1 :(得分:0)
在@Übercoder回答的帮助下,我找到了一个解决方案:
_deviceTimeZone.GetUtcOffset(systemNow.ToDateTimeOffset().UtcDateTime).TotalMilliseconds;
我使用UtcDateTime而不是DateTime,因为DateTime忽略偏移并返回'Unspecified'时间,而UtcDateTime将DateTimeOffset转换为UTC,我能够获得正确的时区偏移。