Xamarin TimeZoneInfo.GetUtcOffset抛出NotImplementedException

时间:2016-02-15 07:35:43

标签: c# xamarin mono

我试图运行此代码:

_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偏移?

已修复:PR

2 个答案:

答案 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,我能够获得正确的时区偏移。