关于c#:. NET按时区名称获取时区偏移量

.NET Get timezone offset by timezone name

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

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

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

谢谢!


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

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


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

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


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

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