3

我的字符串格式目前是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' 不匹配

4

2 回答 2

4

'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)
于 2012-05-22T17:12:00.603 回答
1

'1/12/07 00:07 AM'格式不正确,因为在 12 小时格式中,小时可以在 1-12 范围内,而不是 0。

于 2012-05-22T17:17:44.977 回答