我已经看到了使用'7:30 PM'
格式datetime.strptime
(例如here)来转换诸如'%I:%M%p'
之类的解决方案的方法,但是我有如下所示的字符串:>
'05:15:00.000000000 AM'
同时有秒和AM / PM的事实似乎并不常见。
我该如何转换?
答案 0 :(得分:0)
您可以使用parser
包中的dateutil
将字符串转换为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
答案 1 :(得分:0)
格式的主要问题是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')