時間値の文字列配列を蓄積し、合計時間が 1 日を超えているかどうかを確認したいと考えています。このテスト ケースでは、午前 12:00 に開始して 12 時間を追加します。次に、12 時間 5 分を追加します。合計時間は 24 時間 5 分である必要があります。
問題は、午後 12:00 から午前 0:05 までの計算が、12 時間 5 分ではなく 11 時間 55 分と計算されていることです。
ユースケースでこれらの時間を正しく累積するにはどうすればよいですか?
string[] times = {"12:00 AM", "12:00 PM", "12:05 AM"};
const string timePattern = "h:mm tt";
double totalMillis = 0;
var prevTimeSpan = new TimeSpan(0);
foreach (var time in times)
{
var parsedDate = DateTime.ParseExact(time, timePattern, null, DateTimeStyles.None);
var currTimeSpan = parsedDate.TimeOfDay;
var millis = Math.Abs((prevTimeSpan - currTimeSpan).TotalMilliseconds);
prevTimeSpan = currTimeSpan;
totalMillis += millis;
}
// 24 hours = 86400000
Console.WriteLine("Result is more than 24 hours? {0}", totalMillis >= 86400000 ? "Yes" : "No");