在数据库中,我以UTC格式存储所有日期/时间 .
我知道用户的时区名称(例如“美国东部标准时间”) .
为了显示正确的时间,我认为我需要将用户的时区偏移量添加到UTC日期/时间 . 但是如何通过时区名称来缩短时区?
谢谢!
您可以使用TimeZoneInfo.FindSystemTimeZoneById使用提供的Id获取 TimeZoneInfo 对象,然后使用TimeZoneInfo.GetUtcOffset:
TimeZoneInfo
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"); TimeSpan offset = tzi.GetUtcOffset( myDateTime);
您可以使用TimeZoneInfo类的GetSystemTimeZones()方法获取服务器上配置的所有时区的列表,并将其与客户端中的时区匹配 .
虽然为什么你的时区有“美国东部标准时间”的格式?那个是从哪里来的?
您应该利用 TimeZoneInfo 的 ConvertTime 方法,而不是进行一些手动添加,该方法将根据您指定的TimeZone处理转换日期 .
ConvertTime
var localizedDateTime = TimeZoneInfo.ConvertTime(yourDateTime, localTimeZoneInfo);
3 回答
您可以使用TimeZoneInfo.FindSystemTimeZoneById使用提供的Id获取
TimeZoneInfo
对象,然后使用TimeZoneInfo.GetUtcOffset:您可以使用TimeZoneInfo类的GetSystemTimeZones()方法获取服务器上配置的所有时区的列表,并将其与客户端中的时区匹配 .
虽然为什么你的时区有“美国东部标准时间”的格式?那个是从哪里来的?
您应该利用
TimeZoneInfo
的ConvertTime
方法,而不是进行一些手动添加,该方法将根据您指定的TimeZone处理转换日期 .