给定以下示例:
DateTime result = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Atlantic Standard Time");
既然Atlantic Standard Time
是字符串,这安全吗?AKA,如果我要在德国操作系统上运行相同的代码,代码会失败吗?如果是这样,我应该如何正确处理这样的时区?
给定以下示例:
DateTime result = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Atlantic Standard Time");
既然Atlantic Standard Time
是字符串,这安全吗?AKA,如果我要在德国操作系统上运行相同的代码,代码会失败吗?如果是这样,我应该如何正确处理这样的时区?
时区标识符(例如通过对象的Id
属性获得TimeZoneInfo
)未本地化。它们与在以下位置找到的注册表项名称匹配:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
它们始终是英文的,不应翻译。所以是的,它是安全的。
另一方面,DisplayName
和StandardName
属性DaylightName
是本地化的。他们使用操作系统本身的本地化,忽略您可能对应用程序CurrentCulture
或CurrentUICulture
应用程序所做的任何更改。