. net PCL在将时间从UTC转换为指定时区时发生异常



我正在使用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的日期/时间库,它有自己的时区数据,所以它不必依赖于操作系统。

最新更新