我正在尝试使用此代码将字符串解析为此格式的日期:%Y%m%d%H%M%S
:
from dateutil.parser import parse as parseDate
from datetime import datetime, time, timedelta
chaine = "01/10/201604:45:00"
print chaine
date = chaine[:10] + " " + chaine[11:]
print date
date = parseDate(date,yearfirst=True)
print date
i = str(date).replace('-','')
print i
i = str(i).replace(':','')
print i
i = str(i).replace(' ','')
print i
这是我得到的输出:
01/10/201604:45:00
01/10/2016 4:45:00
2016-01-10 04:45:00
20160110 04:45:00
20160110 044500
20160110044500
在这里,我不是将01作为日期而是将10作为月份,而是将01作为月份而将10作为日期,这意味着我得到的是1月而不是10月。
另一方面,当我将chaine
更改为:14/11/201615:30:00
时,我会得到正确的日期:20161114053000
:月份和日期。
我在这里错过了什么吗?
答案 0 :(得分:2)
你的约会不明确;它可以被解释为10月1日或1月10日。
由于输入中的第一个数字(01
)是天,而不是月份,因此您需要将dayfirst
参数设置为True
;默认设置为False
,表示遇到的第一个数字被解释为月份:
>>> parseDate('01/10/2016 4:45:00')
datetime.datetime(2016, 1, 10, 4, 45)
>>> parseDate('01/10/2016 4:45:00', dayfirst=True)
datetime.datetime(2016, 10, 1, 4, 45)
答案 1 :(得分:1)
您可以使用datetime.strptime()
来实现这一目标:
>>> from datetime import datetime
>>>
>>> datetime.strptime('01/10/201604:45:00', '%d/%m/%Y%H:%M:%S')
datetime.datetime(2016, 10, 1, 4, 45)