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

时间:2019-01-15 05:09:54

标签: python datetime time strptime

我已经看到了使用'7:30 PM'格式datetime.strptime(例如here)来转换诸如'%I:%M%p'之类的解决方案的方法,但是我有如下所示的字符串:

'05:15:00.000000000 AM'

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

我该如何转换?

2 个答案:

答案 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')