python 中的持续时间
Time Duration in python
给定两个字符串:
ex:
start_time="3:00 PM"
Duration="3:10"
开始时间采用 12 小时制(以 AM 或 PM 结束),持续时间
表示小时数和分钟数
假设开始时间有效 times.The 分钟的持续时间将
可以是小于60的整数,但是小时可以是任意整数。
我需要将持续时间添加到开始时间和 return 结果
(不使用任何图书馆)。
结果应采用 12 小时制格式(以 AM 或 PM 结尾)表示
小时数和分钟数
ex:
start_time = "6:30 PM"
Duration = "205:12"
# Returns: 7:42 AM
我尝试并最终得到了所需的答案,但无法为以下内容生成正确的上午或下午
添加后的结果。
what I Tried:
start_time = "6:30 PM"
Duration = "205:12"
#My answer =7:42
#expected :7:42 AM
有人可以帮助我在添加开始后生成正确的 AM 或 PM 的逻辑吗
时间和持续时间。
def add_time(a,b):
a=a.split()
b=b.split()
be=int(a[0][:a[0].find(':')])
af=int(a[0][a[0].find(':')+1:])
be1 = int(b[0][:b[0].find(':')])
af1 = int(b[0][b[0].find(':') + 1:])
return(((be+be1)//24)+1)
s=be+(be1)%12
p=af+af1
if ((s>12) and (p<60)) :
return(str(s-12)+":"+str(p))
elif ((s<12) and (p>60)) :
f = p-60
if len(str(f))<=1:
return(str(s+1)+":"+str('0'+str(f)))
else:
return (str(s + 1)+":"+(str(f)))
elif ((s<12) and (p<60)) :
return(str(s)+":"+str(p))
elif ((s>12) and (p>60)):
f=p-60
if len(str(f)) <= 1:
return (str((s -12)+1)+":"+('0' + str(f)))
else:
return (str((s -12)+1)+":"+(str(f)))
print(add_time("10:10 PM", "3:30"))
# Returns: 1:40 AM
print(add_time("11:43 PM", "24:20"))
# Returns: 12:03 AM
您的代码似乎没有涵盖所有边缘情况,例如add_time("11:43 PM", "1:20")
returns None
因为案例 s==12
没有涵盖。
因此,应该在相应的 if
条件中放置 <=
而不是 <
。分钟数的增加导致小时数大于 12
的情况,尽管小时数本身的增加 而不是 ,也不包括在内。所以我们应该先检查分钟,再检查小时,而不是同时检查。
为了使代码更具可读性,我们使用 f-strings
并且可以使用带有参数的 str.split()
,请原谅我对代码进行了相当大的更改:
def add_time(a,b):
start = a.split()
start_h, start_m = [int(val) for val in start[0].split(':')]
start_app = start[1]
dur_h, dur_m = [int(val) for val in b.split(':')]
end_m = start_m+dur_m
end_h = end_m//60
end_m %= 60
end_h += start_h+dur_h
if (end_h//12)%2==0:
end_app = start_app
else:
end_app = 'AM' if start_app=='PM' else 'PM'
return f'{end_h:02}:{end_m:02} {end_app}'
给定两个字符串:
ex:
start_time="3:00 PM"
Duration="3:10"
开始时间采用 12 小时制(以 AM 或 PM 结束),持续时间 表示小时数和分钟数
假设开始时间有效 times.The 分钟的持续时间将 可以是小于60的整数,但是小时可以是任意整数。
我需要将持续时间添加到开始时间和 return 结果 (不使用任何图书馆)。 结果应采用 12 小时制格式(以 AM 或 PM 结尾)表示 小时数和分钟数
ex:
start_time = "6:30 PM"
Duration = "205:12"
# Returns: 7:42 AM
我尝试并最终得到了所需的答案,但无法为以下内容生成正确的上午或下午 添加后的结果。
what I Tried:
start_time = "6:30 PM"
Duration = "205:12"
#My answer =7:42
#expected :7:42 AM
有人可以帮助我在添加开始后生成正确的 AM 或 PM 的逻辑吗 时间和持续时间。
def add_time(a,b):
a=a.split()
b=b.split()
be=int(a[0][:a[0].find(':')])
af=int(a[0][a[0].find(':')+1:])
be1 = int(b[0][:b[0].find(':')])
af1 = int(b[0][b[0].find(':') + 1:])
return(((be+be1)//24)+1)
s=be+(be1)%12
p=af+af1
if ((s>12) and (p<60)) :
return(str(s-12)+":"+str(p))
elif ((s<12) and (p>60)) :
f = p-60
if len(str(f))<=1:
return(str(s+1)+":"+str('0'+str(f)))
else:
return (str(s + 1)+":"+(str(f)))
elif ((s<12) and (p<60)) :
return(str(s)+":"+str(p))
elif ((s>12) and (p>60)):
f=p-60
if len(str(f)) <= 1:
return (str((s -12)+1)+":"+('0' + str(f)))
else:
return (str((s -12)+1)+":"+(str(f)))
print(add_time("10:10 PM", "3:30"))
# Returns: 1:40 AM
print(add_time("11:43 PM", "24:20"))
# Returns: 12:03 AM
您的代码似乎没有涵盖所有边缘情况,例如add_time("11:43 PM", "1:20")
returns None
因为案例 s==12
没有涵盖。
因此,应该在相应的 if
条件中放置 <=
而不是 <
。分钟数的增加导致小时数大于 12
的情况,尽管小时数本身的增加 而不是 ,也不包括在内。所以我们应该先检查分钟,再检查小时,而不是同时检查。
为了使代码更具可读性,我们使用 f-strings
并且可以使用带有参数的 str.split()
,请原谅我对代码进行了相当大的更改:
def add_time(a,b):
start = a.split()
start_h, start_m = [int(val) for val in start[0].split(':')]
start_app = start[1]
dur_h, dur_m = [int(val) for val in b.split(':')]
end_m = start_m+dur_m
end_h = end_m//60
end_m %= 60
end_h += start_h+dur_h
if (end_h//12)%2==0:
end_app = start_app
else:
end_app = 'AM' if start_app=='PM' else 'PM'
return f'{end_h:02}:{end_m:02} {end_app}'