我每天在给定的时钟时间运行一个进程(在美国——这很重要)。我一直在尝试计算如何在一天 25 小时内正确地做到这一点。考虑以下 C# 代码:
var referenceDate = new DateTime(2012, 11, 3);
var referenceTime = new TimeSpan(0, 19, 30, 0);
var originalTime = referenceDate.Add(referenceTime);
var tomorrow = referenceDate.AddDays(1);
var nextTimestamp = string.Format(
"{0} {1:00}:{2:00}",
tomorrow.ToShortDateString(),
referenceTime.Hours,
referenceTime.Minutes);
var nextRunTimestamp = DateTime.Parse(nextTimestamp);
我使用格式/解析序列来确保我们可以避免跨越 DST 转换时间时的时间跨度。现在下面表达式的结果应该是什么?
nextRunTimestamp.Subtract(originalTime).TotalHours
好吧,结果是 24,但我认为应该是 25,因为 2012 年 11 月 4 日是一天 25 小时(在凌晨 2 点转换),所以 11 月 3 日的 19:30 和 11 月 4 日的 19:30 之间的差异应该是 25 小时。
我如何得到一年中每个日期的正确答案?