c# - 夏令时是否会导致 DateTime 计算变为负数

标签 c# datetime dst

我们目前正在重写我们服务的核心,基本上我们有可以按时间间隔、日期、特定时间等运行的计划任务。

目前我们想知道夏令时是否会给我们带来麻烦,基本上我们根据任务应该执行的日期、时间和间隔来计算下一个可能的运行时间。我们通过获取当前时间并向该 DateTime 添加天/分钟/小时来实现此目的。

然后,我们采用这个新的运行时间并从此 DateTime 中减去 DateTime.Now,留下直到下一次运行的时间跨度。

但是,如果当前时间是夏令时的 01:50,我们添加 20 分钟(这是我们设定的时间间隔),最终得到 02:10 的时间,但由于这是夏令时,所以它是实际上是 01:10。

当我从 01:10(实际上是 02:10)中减去当前时间(01:50)时,这是否会返回一个我需要解决的负值,或者这是否永远不会返回负值,因为 DateTime只是一个长长的下面保存着正确的信息吗?

基本上,下面的代码,是否需要检查?

//Get interval between nextrun and right now!
double interval = (NextRun - DateTime.Now).TotalMilliseconds;

//Check if interval is ever less or equal to 0, should never happen but maybe with daylight saving time?
if(interval <= 0)
{
    //Set default value
    interval = IntervalInMilliseconds;
}

我们认为不需要进行此检查,但到目前为止我们的谷歌搜索尚未给我们明确的答案。

最佳答案

到处使用 DateTime.UtcNow 而不是 DateTime.Now

关于c# - 夏令时是否会导致 DateTime 计算变为负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943148/

相关文章:

asp.net - Gridview BoundField 在编辑/更新模式下从日期时间中删除时间

java - java 8 中澳大利亚/墨尔本时区的日期时间日光节约问题

c# - 为什么 .NET 不能正确转换时间?

C# MySQL Order By 返回 -1

c# - 使用动态/DLR 的 DynamicProxy

c# - 在 ReadToEnd 之后关闭 StreamReader

c++ - boost ptime 到 unix 时间戳转换错误

c# - SynchronizationContext 可以不在 WinForms/WPF 应用程序中使用吗?

Python2 datetime - 将纪元时间转换为带偏移量的 UTC 时间戳

c# - CRM 2011,插件中的日期和夏令时