使用 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
自动为您处理。
关于c# - .NET 在给定时区的情况下将日期时间转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949779/