3

My string format currently is datetime.strptime(date_as_string, '%d/%m/%y %I:%M %p')

this unfortunately does not work with input such as 1/12/07 00:07 AM

How I can get strptime to recogize this format ?

EDIT:

ValueError: time data '1/12/07 00:07 AM' does not match format '%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 時間形式では、時間が 0 ではなく 1 ~ 12 の範囲になる可能性があるためです。

于 2012-05-22T17:17:44.977 に答える