使用军用时间格式时如何防止负时间

How can I prevent negative time in using military time format

当我的开始时间 = "19:00" PM 然后我的结束时间 = "01:30" AM 答案是否定的,如何及时避免负面结果?

string startime = record.TimeStart;
string endtime = record.TimeFinish;
TimeSpan span = DateTime.Parse(endtime).Subtract(DateTime.Parse(startime));
string hours_spent = string.Format(
    "{0:D2}:{1:D2}:{2:D2}", 
    span.Hours, span.Minutes, span.Seconds);

如果 endtime 早于 starttime,则向 endtime 添加一天。像这样:

var startDateTime = DateTime.Parse(starttime).Time;
var endDateTime = DateTime.Parse(endtime).Time;
if (endDateTime < startDateTime)
{
    endDateTime += TimeSpan.FromDays(1);
}
TimeSpan timeSpent = endDateTime - startDateTime;

你正在穿越午夜,所以实际比较是(以今天的日期为例):

[2015-10-12 01:30]  - [2015-10-12 19:00]

-17 hrs and 30 minutes。如果要将其转换为正时间,则添加日期组件或将 24 小时添加到时间跨度:

if(span.Hours < 0)
   span = span.AddDays(1);