私たちが持っている古い C++ MFC プログラムのバグで、固定基準日からの特定の日付のオフセット (日数) を計算することがわかりました。何らかの理由で結果が 1 つずれていたので、元のプログラマーが CTimeSpan.GetDays() メソッドを使用した場所まで追跡しました。ドキュメントによると:
夏時間により、GetDays が驚くべき結果を返す可能性があることに注意してください。たとえば、DST が有効な場合、GetDays は 4 月 1 日から 5 月 1 日までの日数を 30 ではなく 29 と報告します。これは、4 月の 1 日が 1 時間短縮されるため、1 日としてカウントされないためです。
私が提案する修正は、(obj.GetTotalHours()+1)/24代わりに使用することです。これは毎日ほぼ同じ時間に実行されるバッチ ジョブなので、すべての問題をカバーできると思いますが、実装する前にここの賢い人にもっと良い方法があるかどうか尋ねてみようと思いました。
これは単なる副次的な問題ですが、プログラムがいつでも実行できる場合、これがどのように処理されるかにも興味があります。