UTC转换为本地与历史悠久的准确性,我有:按国家
- 一个国家(例如纳米比亚)
- 一个DateTime存储在UTC(比方说,1955年10月23日下午12:01)
我想编写一个函数,将UTC日期时间转换为具有历史精确度的当地纳米比亚日期时间,并考虑到夏令时。
我不能使用的时区,因为一些国家实际移动时区(纳米比亚比如冬季和沃斯特(夏季UTC + 2)在WAT(UTC + 1)下下降。
任何CSHARP功能,可以实现这一点?加分,如果这可以只透过国家的两个字母的国家代码(例如“NA”)来实现
理想的函数签名应该是:
public static DateTime UtcToLocal(this DateTime UtcDateTime, string CountryCode)
或
public static string UtcToLocal(this DateTime UtcDateTime, string CountryCode)
UPDATE
正如下面的评论部分中指出,一些国家也必然多个时区(美国为例)。因此,该方法的签名而应如下所示:
public static DateTime UtcToLocal(this DateTime UtcDateTime, string TZ_Environment_ZoneName)
http://stackoverflow.com/questions/179940/convert-utc-gmt-time-to-local-time – aliboy38 2015-02-10 10:24:06
不,一个地方不会改变时区(当然,这取决于您使用的时区数据)。时区更改UTC偏移量。例如,我在英国时区,即IANA/TZDB术语中的“欧洲/伦敦”。那是冬天的GMT和夏天的BST,但它仍然是一个时区。您的方法签名(除了参数大写)更令人担忧的是,一个国家只观察一个时区。以美国为例... – 2015-02-10 10:25:48
Jon Skeet感谢您的宝贵意见。幸运的是,这个特定系统的目标国家没有多个时区,但是我会牢记这一点。 – 2015-02-10 10:28:52