.NET 将给定时区的日期时间转换为 UTC

问题描述 投票:0回答:3

使用 C#,我需要将传入的日期时间值转换为 UTC。我知道 .NET 中有用于这些转换的功能,但我必须在标准时区列表中识别时区。

在 .NET 中执行此操作的最佳方法是什么?我是否需要创建一个映射表来将时区转换为

TimeZoneInfo.GetSystemTimeZones()
中的 ID(例如“太平洋标准时间(墨西哥)”)

这样我就可以使用

TimeZoneInfo.FindSystemTimeZoneById()

c# .net timezone utc
3个回答
19
投票

我之前已经通过使用映射表将时区 ID 存储在数据库中来完成此操作。即包含

TimeZone.GetSystemTimeZones()

结果的表格

您实际上并不需要使用

TimeZoneInfo.FindSystemTimeZoneById()
:您可以使用
TimeZoneInfo.ConvertTimeBySystemTimeZoneId()
的重载之一进行转换。此方法有一些采用 DateTime 值的重载,以及一些采用 DateTimeOffset 值的重载(这是更可取的,因为它们指定了明确的时间点)。

例如

TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, "New Zealand Standard Time", "UTC")

使用系统时区 ID 而不是存储在数据库中的偏移量的真正好处是,夏令时由

TimeZoneInfo.ConvertTimeBySystemTimeZoneId
自动为您处理。



2
投票

MSDN 上有很多关于转换到不同时区的信息。

您可能想使用 ConvertTimeBySystemTimeZoneId 方法(请点击链接查看示例)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.