给出两个日期格式的输入,表示事件的开始和开始:
例如:23:59
和23:10
如何手动计算时间跨度,我的意思是此事件的持续时间?
你可以考虑界面:
void timeSpan(int hourStart, int minutesStart, int hourEnd, int minutesEnd);
答案 0 :(得分:1)
这真的是你想要的吗?
endh,endm := split(':',endtime)
starth,startm := split(':',starttime)
diffm := endm-startm
diffh := endh-starth
if (diffm<0)
diffm += 60
diffh -= 1
修改强>
在评论中讨论:如果开始时间和结束时间仅以HH:MM和结束时间&lt;给出。开始时间OQ要我们假设,结束时间是第二天(不是+2天,+ 3天,......)。在这种情况下,我们需要:
if (diffh<0)
diffh += 24
答案 1 :(得分:1)
通过“手动”我假设你的意思是没有一个库来解析时间。
将时间转换为分钟,然后减去它们:
start = "23:10"
end = "23:59"
s = parseInt(start.substr(0, 2)) * 60 + parseInt(start.substr(3, 2))
e = parseInt(end.substr(0, 2)) * 60 + parseInt(end.substr(3, 2))
diff = e - s
如果开始日期在结束日期之后,则会得到否定结果。如果这意味着结束时间是下一个日期,您可以添加24 * 60分钟:
if diff < 0
diff += 24*60
如果这意味着刚刚交换了时间,您可以获得结果的绝对值:
diff = abs(diff)