C# 使用C将日期时间从UTC转换为用户提供的时区#

C# 使用C将日期时间从UTC转换为用户提供的时区#,c#,asp.net,datetime,timezone,C#,Asp.net,Datetime,Timezone,比如说,如果我有一个数据库列,其中包含UTC时区中的日期/时间,我可以将它们读入用C#编写的ASP.NET web应用程序中的DateTime对象。如何将它们转换为用户提供的时区?这假设时间具有种类=日期时间种类。Utc 您可以使用: 或: 您可能想查看上的MSDN文章,了解该方法的细节 这可能也值得一读。它比你想象的要复杂。这假设time有一个Kind=DateTimeKind.Utc 您可以使用: 或: 您可能想查看上的MSDN文章,了解该方法的细节 这可能也值得一读。它比您想象的要复杂。要

比如说,如果我有一个数据库列,其中包含UTC时区中的日期/时间,我可以将它们读入用C#编写的ASP.NET web应用程序中的DateTime对象。如何将它们转换为用户提供的时区?

这假设
时间
具有
种类=日期时间种类。Utc

您可以使用:

或:

您可能想查看上的MSDN文章,了解该方法的细节


这可能也值得一读。它比你想象的要复杂。

这假设
time
有一个
Kind=DateTimeKind.Utc

您可以使用:

或:

您可能想查看上的MSDN文章,了解该方法的细节


这可能也值得一读。它比您想象的要复杂。

要在系统中获取时区列表,您可以使用TimeZoneInfo.GetSystemTimeZones()。它将 为您的系统提供所有可用时区的列表

      List<TimeZoneInfo>  lstTZI = TimeZoneInfo.GetSystemTimeZones().ToList(); 
List lstzi=TimeZoneInfo.GetSystemTimeZones().ToList();

因为它是ReadOnlyCollection。现在您可以将此源与下拉列表绑定。

要获取系统中的时区列表,可以使用TimeZoneInfo.GetSystemTimeZones()。它将 为您的系统提供所有可用时区的列表

      List<TimeZoneInfo>  lstTZI = TimeZoneInfo.GetSystemTimeZones().ToList(); 
List lstzi=TimeZoneInfo.GetSystemTimeZones().ToList();

因为它是ReadOnlyCollection。现在您可以将此源代码与您的DropDownCntrl绑定。

非常感谢!一个后续问题。如果我想存储一个时区列表供用户选择,TimeZoneInfo的哪个属性最好存储在DropDownCtrl值中?似乎时区的Id是一个合理的属性我唯一关心的是Id是一个字符串,类似于“太平洋标准时间(墨西哥)”而不仅仅是一个数字。我有点担心本地化?啊,好的。在这种情况下,
BaseUtcOffset.TotalHours
可能会起作用。再次感谢。应该可以了。非常感谢!一个后续问题。如果我想存储一个时区列表供用户选择,TimeZoneInfo的哪个属性最好存储在DropDownCtrl值中?似乎时区的Id是一个合理的属性我唯一关心的是Id是一个字符串,类似于“太平洋标准时间(墨西哥)”而不仅仅是一个数字。我有点担心本地化?啊,好的。在这种情况下,
BaseUtcOffset.TotalHours
可能会起作用。再次感谢。应该可以了。添加得不错。谢谢好奇的是,有没有办法在用户的web浏览器中选择一个时区?使用TimeZone.CurrentTimeZone获取当前时区,并使用列表lstzi中的标准名称找到它。添加得不错。谢谢好奇的是,有没有办法在用户的web浏览器中选择时区?使用TimeZone.CurrentTimeZone获取当前时区,并使用列表LSTZI中的标准名称查找它。
      List<TimeZoneInfo>  lstTZI = TimeZoneInfo.GetSystemTimeZones().ToList();