Pseudocode 手动时间跨度

Pseudocode 手动时间跨度,pseudocode,timespan,Pseudocode,Timespan,给定两个日期格式的输入,表示事件的开始和结束: 例如:23:59和23:10 如何手动计算时间跨度,我指的是该事件的持续时间 你可以考虑一下界面: void timeSpan(整数小时开始、整数分钟开始、整数小时结束、整数分钟结束)这真的是你想要的吗 endh,endm := split(':',endtime) starth,startm := split(':',starttime) diffm := endm-startm diffh := endh-starth if (diffm&

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

例如:
23:59
23:10

如何手动计算时间跨度,我指的是该事件的持续时间

你可以考虑一下界面:


void timeSpan(整数小时开始、整数分钟开始、整数小时结束、整数分钟结束)

这真的是你想要的吗

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

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

if (diffm<0) 
  diffm += 60
  diffh -= 1
endh,endm:=split(“:”,endtime)
starth,startm:=拆分(“:”,starttime)
diffm:=endm startm
diffh:=结束开始
如果(diffm所说的“手动”,我假设您的意思是没有库来解析时间

将时间转换为分钟,然后减去:

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
如果开始日期晚于结束日期,则结果为负值。如果这意味着结束时间是下一天m,则可以添加24*60分钟:

if diff < 0
  diff += 24*60

如果
diffh如果开始和结束以HH:MM给出,这是不可能的!如果
end
表示第二天的小时,这是可能的。那么你的意思是结束=23:10,开始=23:59?你应该更新你的问题以考虑到这一点。因为我们不知道,是第二天23:10还是+2天还是+3天……我更新了我的答案以包含这一点。@Richard:以分钟为单位的时间跨度。如果开始分钟数小于结束分钟数,则计算正确?@Richard:如果开始时间在结束时间之后,则会得到一个负结果。如果这意味着结束时间是第二天,则可以在结果上加上24*60分钟以获得正确的结果。如果这意味着时间刚刚交换,则可以get是结果的绝对值。
if diff < 0
  diff += 24*60
diff = abs(diff)