Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将12小时字符串转换为24小时日期时间?_Python_Datetime_Time_Strptime - Fatal编程技术网

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
from
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

格式的主要问题是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')