如何将 12 小时制字符串转换为 24 小时制日期时间?

How to convert 12 hour string into 24 hour datetime?

我见过使用 datetime.strptime 格式 '%I:%M%p'(例如 here)转换类似 '7:30 PM' 的解决方案,但我的字符串如下所示:

'05:15:00.000000000 AM'

同时有秒和AM/PM的事实似乎并不常见。

如何转换?

您可以使用 dateutil 包中的 parser 将字符串转换为日期时间对象,然后使用日期时间对象从中获取字符串。

from dateutil import parser
from datetime import datetime
dt = parser.parse("'24/NOV/18 05:15:00.000000000 AM'")
print(dt)
datetime_object = datetime.strftime(dt, '%b %d %Y %I:%M%p')
print(datetime_object)

输出:

2018-11-24 05:15:00 # parser output
Nov 24 2018 05:15AM # strftime output

您的格式的主要问题是 Python 不支持比微秒更精细的任何内容,如 here 所述。事实上,假设你有 000 作为最后三位小数秒,你可以使用下面的格式。

from datetime import datetime
datetime_object = datetime.strptime('24/NOV/18 05:15:00.000000000 AM', '%d/%b/%y %I:%M:%S.%f000 %p')

如果您不能做出这样的假设,这个肮脏的 hack 应该可以工作:

from datetime import datetime
s = '24/NOV/18 05:15:00.000000000 AM'
s = s[:-9] + s[-6:]
datetime_object = datetime.strptime(s, '%d/%b/%y %I:%M:%S.%f %p')