我的字符串格式目前是datetime.strptime(date_as_string, '%d/%m/%y %I:%M %p')
不幸的是,这不适用于输入,例如1/12/07 00:07 AM
我怎样才能让 strptime 识别这种格式?
编辑:
ValueError:时间数据 '1/12/07 00:07 AM' 与格式 '%d/%m/%y %I:%M %p' 不匹配
'00' 不是一个有效的 12 小时小时,但如果您输入的日期字符串格式不一致,您可能会摆脱这样的情况:
>>> from datetime import datetime as dt
>>> date_as_string = '1/12/07 00:07 AM'
>>> format_12 = '%d/%m/%y %I:%M %p'
>>> format_24 = '%d/%m/%y %H:%M %p'
>>> date_string, time_string = date_as_string.split(' ', 1)
>>> try:
... dt.strptime(date_string + ' ' + time_string, format_12)
... except ValueError:
... dt.strptime(date_string + ' ' + time_string, format_24)
...
datetime.datetime(2007, 12, 1, 0, 7)
'1/12/07 00:07 AM'
格式不正确,因为在 12 小时格式中,小时可以在 1-12 范围内,而不是 0。