如果我们提供"America/Phoenix"
这样的时区区域名称,有没有办法在C#中获取当前日期和时间?
我尝试过以下代码: -
TimeZoneInfo ZoneName = System.TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time");
DateTime dataTimeByZoneId = System.TimeZoneInfo.ConvertTime(DateTime.Now,System.TimeZoneInfo.Local, ZoneName);
但它需要/期望输入为"US Standard Time Zone"
。
我希望输入为"America/Phoenix"
。如果我们在C#中有任何选项/方法来实现这个目的,请告诉我吗?
答案 0 :(得分:1)
时区ID America/Phoenix
来自IANA time zone database。 .Net的TimeZoneInfo
类不使用该数据。有关详细信息,请参阅the timezone tag wiki。
要在.NET中使用IANA时区标识符,您应该查看Noda Time。以下是使用Noda Time获取America/Phoenix
的当前本地时间的方法:
Instant now = SystemClock.Instance.Now;
DateTimeZone tz = DateTimeZoneProviders.Tzdb["America/Phoenix"];
ZonedDateTime zdt = now.InZone(tz);
// Then depending on what your needs are, pick one of the following:
LocalDateTime ldt = zdt.LocalDateTime;
DateTime dt = zdt.ToDateTimeUnspecified();
DateTimeOffset dto = zdt.ToDateTimeOffset();