0

给定两个日期格式的输入,表示事件的开始和开始:

例如:23:5923:10

如何手动计算时间跨度,我的意思是这个事件的持续时间?

可以考虑一下界面:

void timeSpan(int hourStart, int minutesStart, int hourEnd, int minutesEnd);

4

2 回答 2

1

这真的是你想要的吗?

endh,endm := split(':',endtime)
starth,startm := split(':',starttime)

diffm := endm-startm
diffh := endh-starth

if (diffm<0) 
  diffm += 60
  diffh -= 1

编辑

经过评论中的讨论:如果开始时间和结束时间仅以 HH:MM 给出,并且结束时间 < 开始时间 OQ 希望我们假设,结束时间是第二天(不是 +2 天,+3 天,...) . 在这种情况下,我们需要:

if (diffh<0)
  diffh += 24
于 2013-03-16T22:28:45.137 回答
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)
于 2013-03-16T22:32:34.500 回答