. net将给定时区的datetime转换为UTC



使用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方法(参见示例链接)

相关内容

  • 没有找到相关文章

最新更新