def time24hr(tstr):
if tstr[-2:0] == 'am' and tstr[0:2] == '12':
a = '00' + tstr[3:5] + 'hr'
return a
elif tstr[-2:0] == 'am' and tstr[0:2] != '12':
b = tstr[0:2] + tstr[3:5] + 'hr'
return b
elif tstr[-2:0] == 'pm':
c = str(int(tstr[0:2]) + 12) + tstr[3:5] + 'hr'
return c
我很困惑为什么此函数不返回字符串,而是显示return None
答案 0 :(得分:1)
您有if
.. elif
.. elif
,这意味着如果输入tstr
不满足任何条件,则您的函数将返回None,因为在
答案 1 :(得分:0)
如果不满足条件,则返回None(因为在这种情况下没有返回值)。
如果不满足所有条件(例如false
),则可以添加返回值。
这说明您提供的tstr
格式不正确,无法在函数中进行转换。
def time24hr(tstr):
if tstr[-2:0] == 'am' and tstr[0:2] == '12':
a = '00' + tstr[3:5] + 'hr'
return a
elif tstr[-2:0] == 'am' and tstr[0:2] != '12':
b = tstr[0:2] + tstr[3:5] + 'hr'
return b
elif tstr[-2:0] == 'pm':
c = str(int(tstr[0:2]) + 12) + tstr[3:5] + 'hr'
return c
return false
答案 2 :(得分:0)
以下有关if条件的更改将有助于解决您的问题。我刚刚将tstr[-2:0]
转换为tstr[-2:]
def time24hr(tstr):
if tstr[-2:] == 'am' and tstr[0:2] == '12':
a = '00' + tstr[3:5] + 'hr'
return a
elif tstr[-2:] == 'am' and tstr[0:2] != '12':
b = tstr[0:2] + tstr[3:5] + 'hr'
return b
elif tstr[-2:] == 'pm':
c = str(int(tstr[0:2]) + 12) + tstr[3:5] + 'hr'
return c
希望有帮助。
答案 3 :(得分:0)
通常,最好查看strptime
或strftime
模块中的time
和datetime
方法。使用它们,您可以将字符串解析为日期时间对象,反之亦然。它们还使您可以轻松地在12h和24h格式之间转换。例如:
from datetime import datetime
strings = ('12:05:10 am', '12:13:14 pm', '6:15:20 pm')
for s in strings:
print(datetime.strptime(s, '%I:%M:%S %p').strftime('%H:%M:%S'))
# 00:05:10
# 12:13:14
# 18:15:20