我们目前正在重写我们服务的核心,基本上我们有可以按时间间隔、日期、特定时间等运行的计划任务。
目前我们想知道夏令时是否会给我们带来麻烦,基本上我们根据任务应该执行的日期、时间和间隔来计算下一个可能的运行时间。我们通过获取当前时间并向该 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/