c# - .NET 在给定时区的情况下将日期时间转换为 UTC

标签 c# .net timezone 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 自动为您处理。

关于c# - .NET 在给定时区的情况下将日期时间转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6949779/

相关文章:

C#:什么时候应该使用 TryParse?

c# - 如何使用 LINQ 从对象集合中获取最新日期?

c# - servicenow - __encoded_query - 一些字段没有被过滤

java - 如何将字符串转换为时区 : Android

python - 时区 - 感知非 UTC 日期时间时区

PHP - 显示不同时区的数据

c# - 使用 EPPLUS 创建数据透视表过滤器

c# - 从弹性中排除(不包含)某些值的查询

c# - Silverlight 5 - 调试 npctrl.dll 崩溃

.net - 有什么理由更喜欢 CefSharp 而不是 CefGlue(或反之亦然)?