Python 如何将12小时字符串转换为24小时日期时间?
我见过使用Python 如何将12小时字符串转换为24小时日期时间?,python,datetime,time,strptime,Python,Datetime,Time,Strptime,我见过使用datetime.strtime格式'%I:%M%p'(例如)转换类似'7:30pm'的内容的解决方案,但我有如下字符串: '05:15:00.000000000 AM' 同时存在秒和AM/PM的事实似乎并不常见 如何转换此内容?您可以使用parserfromdateutil包将字符串转换为datetime对象,然后使用datetime对象从中获取字符串 from dateutil import parser from datetime import datetime dt = pa
datetime.strtime
格式'%I:%M%p'
(例如)转换类似'7:30pm'
的内容的解决方案,但我有如下字符串:
'05:15:00.000000000 AM'
同时存在秒和AM/PM的事实似乎并不常见
如何转换此内容?您可以使用
parser
fromdateutil
包将字符串转换为datetime对象,然后使用datetime对象从中获取字符串
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不支持任何比微秒更细粒度的东西,如前所述。事实上,假设秒的最后三位小数是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')
如果你不能做出这样的假设,这个肮脏的黑客应该会奏效:
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')