我有不同类型的ISO 8601
格式化日期字符串,使用datetime library
,我想从这些字符串获得datetime object
。输入串的Python ISO 8601日期时间解析
实施例:
2017-08-01
(2017年8月1日)2017-09
(2017九月)2017-W20
(第20周)2017-W37-2
(37周的星期二)
我能够获得第一,第二和第四例但是对于第三,我在尝试时得到了回溯。
我使用datetime.datetime.strptime功能为他们在尝试 - 除了块,如下:
try :
d1 = datetime.datetime.strptime(date,'%Y-%m-%d')
except :
try :
d1 = datetime.datetime.strptime(date,'%Y-%m')
except :
try :
d1 = datetime.datetime.strptime(date,'%G-W%V')
except :
print('Not going through')
,当我试图在终端第三try块,这是我得到了
>>> dstr
'2017-W38'
>>> dt.strptime(dstr,'%G-W%V')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\tushar.aggarwal\Desktop\Python\Python3632\lib\_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Users\tushar.aggarwal\Desktop\Python\Python3632\lib\_strptime.py", line 483, in _strptime
raise ValueError("ISO year directive '%G' must be used with "
ValueError: ISO year directive '%G' must be used with the ISO week directive '%V' and a weekday directive ('%A', '%a', '%w', or '%u').
错误
这是我得到了第4的情况下工作:
>>> dstr
'2017-W38-2'
>>> dt.strptime(dstr,'%G-W%V-%u')
datetime.datetime(2017, 9, 19, 0, 0)
这里是参考对于我的代码:strptime documentation
关于日期解析从ISO 8601
格式SO上有很多问题,但我找不到解决我的问题。此外,涉及的问题是非常古老的,并采取老版本的Python,其中%G
,%V
指令strptime
不可用。
'datetime'中的解析是有限的。看看模块'dateutil'。 – BoarGules