手动时间跨度

时间:2013-03-16 22:24:57

标签: pseudocode timespan

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

例如:23:5923:10

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

可以考虑界面:

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

2 个答案:

答案 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)