gpt4 book ai didi

c# - 时区转换和夏令时

转载 作者:行者123 更新时间:2023-11-30 13:03:17 25 4
gpt4 key购买 nike

我们有一个调度程序应用程序。使用此应用程序,用户可以安排任务在接下来的 30 天内每天上午 8 点(太平洋时间)运行。我们将时间转换为 UTC 并将其存储在数据库中,因为我们有来自不同时区的用户。我们使用以下函数将时间转换为 UTC:

public static DateTime ToAccountLocalTime(this DateTime dt)
{
return TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById("user time zone"));
}

现在,如果用户计划在 2012 年 11 月 1 日接下来的 30 天内每天上午 8 点运行任务,那么在数据库中会为这 30 天的每一天创建 30 个条目,时间设置为世界标准时间下午 4 点(返回时)通过上述方法)。

问题发生在 11 月 4 日夏令时结束时。该任务在早上 7 点而不是早上 8 点开始运行,因为调度程序服务始终基于 UTC 运行。

要解决此问题,我们需要上述方法来返回 11 月 1 日至 11 月 3 日的下午 4 点 UTC 和 11 月 4 日之后的日期的下午 3 点 UTC。我应该进行哪些更改才能实现此目的?

最佳答案

如果本地时间很重要,我会存储本地时间 + 时区,并在需要 UTC 时将其转换为 UTC。

然后您存储 8AM PT,它会转换为 3 点或 4 PM UTC,具体取决于当前是否为夏令时。

您将遇到的问题取决于您的数据库,它可能不支持时区。我可能会将您传递的字符串存储到 FindSystemTimeZoneById 中。如果您想变得更花哨,您可以创建一个表,列出所有具有标识列并存储 ID 的表。

关于c# - 时区转换和夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13344693/

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