gpt4 book ai didi

c# - 转换接近夏令时的日期时间?

转载 作者:太空狗 更新时间:2023-10-29 22:33:02 24 4
gpt4 key购买 nike

我正在开发为 365 年 7 月 24 日运行的 GPS 设备运行报告的软件。部分报告输出要求我们将存储的数据库时间(以中部标准时间保存)转换为用户计时器(任何请求的时区)。一年两次,当人们运行在时间更改之前开始并在时间更改之后结束的报告时,我们会遇到 DST 问题。它在一行失败:

return TimeZoneInfo.ConvertTime(dateToConvert, DatabaseTime, UserTime);

dateToConvert 是要转换的 DateTimeDatabaseTimeUserTime 都是 TimeZoneInfo 对象。我没有做任何棘手或复杂的事情,但 DST 时间更改附近的 DateTimes 抛出异常。例如 3/10/2013 2:02:11 AM,即使它正在从中部时间“转换”为中部时间。

处理 DateTimes 接近 DST 时间变化的最佳方法是什么?

最佳答案

您的数据库中有垃圾,3/10/2013 2:02:11 AM 从未存在过。那天早上 1:59 AM 之后的那一分钟是 3:00 AM,时钟移动了一个小时。 .NET 不会容忍那个垃圾日期。

您将需要找出垃圾时间戳是如何在您的数据库中结束的。很明显,从一个时区到另一个时区的时间转换无视夏令时规则,比如在一个时区中激活但在另一个时区中不激活,很可能是这种垃圾的来源。如果您无法修复您的数据库以使用 UTC,那么至少在您的代码中执行此操作。首先在一个时区转到 UTC,然后在另一个时区返回本地时间。使用 TimeZoneInfo 类、ConvertTimeFrom/ToUtc 方法。

关于c# - 转换接近夏令时的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15482809/

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