将UTC的UTC时间转换为用户提供的时区C#
问题描述:
说,如果我有一个数据库列中包含UTC时区的日期/时间,我可以将它们读入到ASP.NET Web应用程序中使用C#编写的DateTime对象中。我如何将它们转换为用户提供的时区?将UTC的UTC时间转换为用户提供的时区C#
答
这假定time
有Kind = DateTimeKind.Utc
你可以使用ConvertTimeFromUtc
:
TimeZoneInfo.ConvertTimeFromUtc(time, userTimeZone);
TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, userTimeZone);
你可能会想看看关于TimeZoneInfo.ConvertTime
MSDN文章该方法的细节。
也许值得关注converting between time zones on MSDN。这比你想象的更复杂。
答
要获得系统中的时区列表,您可以使用TimeZoneInfo.GetSystemTimeZones()。它将为您的系统提供所有可用时区的列表。
List<TimeZoneInfo> lstTZI = TimeZoneInfo.GetSystemTimeZones().ToList();
因为它是ReadOnlyCollection。现在您可以将此源与您的DropDownCntrl绑定。
非常感谢!一个后续问题。如果我想存储用户选择的时区列表,那么TimeZoneInfo的哪个属性最好存储在DropDownCtrl值中? – ahmd0 2012-07-24 03:14:13
似乎时区的ID是一个合理的属性 – 2012-07-24 03:16:59
我唯一关心的是ID是一个字符串,像“太平洋标准时间(墨西哥)”,而不仅仅是一个数字。我有点担心本地化? – ahmd0 2012-07-24 03:19:49