使用c#,我需要将传入的日期时间值转换为UTC。我知道。net中有这些转换的功能但我所需要识别的时区是标准时区列表
http://www.timegenie.com/timezones在。net中做到这一点的最好方法是什么?我是否需要创建一个映射表来将时区转换为TimeZoneInfo.GetSystemTimeZones()中的id ?太平洋标准时间(墨西哥)这样我就可以使用TimeZoneInfo.FindSystemTimeZoneById()?
感谢您的帮助
我以前使用映射表在数据库中存储时区id。即包含TimeZone.GetSystemTimeZones()
您实际上不需要使用TimeZoneInfo.FindSystemTimeZoneById()
:您可以使用TimeZoneInfo.ConvertTimeBySystemTimeZoneId()
的重载之一进行转换。这个方法有一些接受DateTime值的重载,还有一些接受DateTimeOffset值的重载(这是可取的,因为它们指定了一个明确的时间点)。
。
TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, "New Zealand Standard Time", "UTC")
使用系统时区id而不是存储在数据库中的偏移量的真正好处是,TimeZoneInfo.ConvertTimeBySystemTimeZoneId
会自动为您处理夏令时。
DateTime。ToUniversalTime方法
或
DateTime。UtcNow属性
MSDN上有很多关于转换到不同时区的信息。
- DateTime (MSDN),具体看"DateTime操作"。
- TimeZoneInfo
您可能想使用ConvertTimeBySystemTimeZoneId方法(参见示例链接)