gpt4 book ai didi

c# - 如何获取不同时区的当前 UTC 偏移量?

转载 作者:太空狗 更新时间:2023-10-30 00:31:38 25 4
gpt4 key购买 nike

问题:我需要在不同时区的特定时间在 UTC 上的服务器上执行任务。例如,我想在太平洋时间上午 9:00 执行,而不考虑夏令时的变化。

我有什么?我通过做检查了时区的枚举

var infos = TimeZoneInfo.GetSystemTimeZones();
foreach (var info in infos)
{
Console.WriteLine(info.Id);
}

例如,我只能看到太平洋时间的“太平洋标准时间”,如果我执行以下操作,

TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time").GetUtcOffset(DateTime.UtcNow)

我得到 -07:00:00 作为输出,但截至目前,偏移量为 -08。这意味着它不考虑日光变化。

我打算根据上面得到的偏移量创建一个 DateTime 实例,但它似乎没有按我预期的那样工作。

此外,我不能使用像 NodaTime 这样的框架

知道如何让它工作吗?

最佳答案

您已经得到了答案,使用 TimeZoneInfo.GetUtcOffset 并传递带有 DateTimeKind.UtcDateTime 将起作用。

I get -07:00:00 as output but as of now the offset is -08. That means it doesn't consider the daylight changes.

实际上,-7 确实是当前偏移量,因为太平洋时间当前使用夏令时。在冬季,偏移量恢复为 -8,这是标准偏移量。我想你只是把它们倒过来了。

另外,请记住 TimeZoneInfo 对象的 Id 属性是整个时区的标识符。其中一些具有误导性,例如 "Pacific Standard Time" - 这会让您相信它只使用太平洋标准时间 (PST),但实际上它代表整个北美太平洋时区 - 包括太平洋标准时间太平洋夏令时。它将在适当的转换中相应地切换偏移量。

关于c# - 如何获取不同时区的当前 UTC 偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24069938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com