私は毎日特定の時刻にプロセスを実行しています (米国では重要です)。私は25時間の1日でそれを正しく行う方法を計算しようとしています. 次の 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 であることが判明しましたが、2012 年 11 月 4 日は 25 時間制なので (午前 2 時に移行)、11 月 3 日の 19:30 と 11 月 4 日の 19:30 の差は 25 になるはずです。 25時間になります。
年の各日付の正しい答えを得るにはどうすればよいですか?