我想累积一个时间值的字符串数组并检查总时间是否大于一天。在这个测试用例中,我从上午 12:00 开始并添加 12 小时。然后我加上 12 小时 5 分钟。总时间应为 24 小时 5 分钟。
问题是从 12:00 PM 到 12:05 AM 的计算是计算 11 小时 55 分钟而不是 12 小时 5 分钟。
如何为我的用例正确累积这些时间?
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");