我正在使用c#在Xamarin Studio开发一个项目。这是一个。net PCL项目,我的个人资料是78。我的问题是,我无法将DateTime从UTC转换为指定的时区。我使用下面的代码将DateTime从UTC转换为指定的本地时区。
DateTime dateTime = (TimeZoneInfo.ConvertTime (DateTime.SpecifyKind (DateTime.UtcNow, DateTimeKind.Utc), profile.TimeZone));
我正在得到以下例外
dateTime参数的Kind属性为DateTimeKind。Utc,但sourceTimeZone参数不等于TimeZoneInfo.Utc.
在PCL中,TimeZoneInfo.ConvertTime
没有用于指定TimeZoneInfo sourceTimeZone
的参数。它只有2个重载,参数如下。
ConvertTime(DateTime, TimeZoneInfo) &ConvertTime (DateTimeOffsetTimeZoneInfo)
TimeZoneInfo只存在于指定目的TimeZoneInfo。
也没有TimeZoneInfo.ConvertTimeFromUtc, TimeZoneInfo.ConvertTimeToUtc
方法
请有人帮我解决这个问题
添加到Hans的注释中:
这完全是设计的。时区转换需要一个带有数据库的操作系统,该数据库可以跟踪世界各地的时区规则。可以在桌面级机器上使用,但不能在电话等有限的设备上使用。如果没有数据库,您只能了解UTC和设备配置的时区。如果这是一个要求,您不能使用PCL,使用商业web服务为您进行转换将是一个解决方案。
看看野田时间。这是一个。net的日期/时间库,它有自己的时区数据,所以它不必依赖于操作系统。