问题描述
我正在开发使用C#在Xamarin Studio中的一个项目。它是一种.NET PCL项目,我的个人资料是78。我的问题是,我无法为DateTime转换UTC到指定的时区。我使用低于code转换日期时间从UTC到指定的本地时区。
I am developing a project in Xamarin Studio using C#. Its a .net PCL project and my profile is 78. My problem is, i am unable to convert a DateTime from UTC to specified timezone. I am using below code to convert DateTime from UTC to specified local TimeZone.
DateTime dateTime = (TimeZoneInfo.ConvertTime (DateTime.SpecifyKind (DateTime.UtcNow, DateTimeKind.Utc), profile.TimeZone));
我收到以下异常
I am getting below exception
dateTime参数的Kind属性为DateTimeKind.Utc,但 在sourceTimeZone参数不等于TimeZoneInfo.Utc。
在PCL TimeZoneInfo.ConvertTime
没有指定的的TimeZoneInfo sourceTimeZone
的参数。它只有2以下参数重载。
In PCL TimeZoneInfo.ConvertTime
doesn't have a parameter for specifying the TimeZoneInfo sourceTimeZone
. It has only 2 overloads with below parameters.
ConvertTime(日期时间,的TimeZoneInfo)及ConvertTime(的DateTimeOffset, 的TimeZoneInfo)
的TimeZoneInfo只存在指定目的地的TimeZoneInfo。
TimeZoneInfo exist only to specify destination TimeZoneInfo.
此外,它不具有 TimeZoneInfo.ConvertTimeFromUtc,TimeZoneInfo.ConvertTimeToUtc
方法。
请人帮我解决这个问题。
Please someone help me to fix this.
推荐答案
要添加到汉斯的评论:
这是都通过设计。时区的转换需要一个操作系统,保持在世界各地的时区的规则轨道的数据库。可在桌面级的机器,而不是像手机有限的设备可用。如果没有数据库,你只能知道一些有关UTC和器件配置该时区。您不能使用PCL,如果这是一个要求,使用商用的Web服务进行转换对你将是一个解决办法。
看一看野田佳彦时间。这是一个日期/时间库.NET有它自己的时区的数据,因此不必依赖操作系统。它还支持PCLS。
Have a look at Noda Time. This is a Date/Time library for .NET which has its own time zone data so it doesn't have to rely on the OS. It also supports PCLs.
这篇关于.NET PCL例外,而将时间从UTC到指定的时区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!