使用军用时间格式时如何防止负时间
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);
当我的开始时间 = "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);