首页 文章

.NET按时区名称获取时区偏移量

提问于
浏览
25

在数据库中,我以UTC格式存储所有日期/时间 .

我知道用户的时区名称(例如“美国东部标准时间”) .

为了显示正确的时间,我认为我需要将用户的时区偏移量添加到UTC日期/时间 . 但是如何通过时区名称来缩短时区?

谢谢!

3 回答

  • 39

    您可以使用TimeZoneInfo.FindSystemTimeZoneById使用提供的Id获取 TimeZoneInfo 对象,然后使用TimeZoneInfo.GetUtcOffset

    TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
    TimeSpan offset = tzi.GetUtcOffset( myDateTime);
    
  • 4

    您可以使用TimeZoneInfo类的GetSystemTimeZones()方法获取服务器上配置的所有时区的列表,并将其与客户端中的时区匹配 .

    虽然为什么你的时区有“美国东部标准时间”的格式?那个是从哪里来的?

  • 2

    您应该利用 TimeZoneInfoConvertTime 方法,而不是进行一些手动添加,该方法将根据您指定的TimeZone处理转换日期 .

    var localizedDateTime = TimeZoneInfo.ConvertTime(yourDateTime, localTimeZoneInfo);
    

相关问题