获取DateTime.Now特定时区而不管设备时区的?(Get DateTime.Now for a

2019-07-31 14:26发布

我有一个从Web服务处理数据MonoTouch的应用程序。 此数据包含最新信息,这是具体到一个时区。 该时区为UTC +12这是新西兰。

我的应用程序显示基于当前时间这个数据。 这样做的问题是,当应用程序在不同的时区的使用,因为设备上的当前时间不正确,不正确显示数据。

我如何获得UTC +12当前日期时间,无论在设备上的区域设置/时区设置的?

编辑:

我曾尝试基于下面的答案下面的代码:

TimeZoneInfo.ConvertTime (DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("Pacific/Auckland"));

此代码工作正常在我的电脑上。但是当我运行它的MonoTouch我得到以下异常:

System.ArgumentException: Kind propery of dateTime is Local but the sourceTimeZone does not equal TimeZoneInfo.Local
   at System.TimeZoneInfo.ConvertTime (DateTime dateTime, System.TimeZoneInfo sourceTimeZone, System.TimeZoneInfo destinationTimeZone) [0x00018] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System/TimeZoneInfo.cs:179
   at System.TimeZoneInfo.ConvertTime (DateTime dateTime, System.TimeZoneInfo destinationTimeZone) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System/TimeZoneInfo.cs:173

Answer 1:

这是一个错误的MonoTouch的。

该修补程序将包含在MonoTouch的未​​来版本的(我不知道到底是哪尚未虽然)。

在任何情况下,已经有一个修补程序可用。



Answer 2:

使用DateTime.Now 。 这会给你的系统时区的日期和时间。 现在,时间转换为所需的时区的时间是这样

var indianTime = TimeZoneInfo.ConvertTime (DateTime.Now,
                 TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"));

要获得TimeZone的列表运行此方法

ReadOnlyCollection<TimeZoneInfo> zones = TimeZoneInfo.GetSystemTimeZones();
Console.WriteLine("The local system has the following {0} time zones", zones.Count);
foreach (TimeZoneInfo zone in zones)
    Console.WriteLine(zone.Id);


Answer 3:

你可以不喜欢它:

Datetime date = TimeZoneInfo.ConvertTime(utcDateTime, timeZone); 

只是通过给定的参数。



文章来源: Get DateTime.Now for a specific TimeZone regardless of the device timezone?