如果我们提供时区区域的名称,如"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# 中是否有任何选项/方法来实现这一目标?
时区
ID 类似 America/Phoenix
来自 IANA 时区数据库。 .Net的TimeZoneInfo
类不使用这些数据。 有关详细信息,请参阅时区标记维基。
要在 .NET 中使用 IANA 时区标识符,您应该查看 Noda 时间。 以下是使用 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();