关于datetime:如何使用Python将此字符串转换为iso 8601

How convert this string to iso 8601 with Python

我有这根绳子

1
14 Mai 2014

我想把它转换成ISO 8601

我读了这个答案和这个,

首先,我尝试将字符串转换为日期,然后将其转换为ISO格式:

1
2
test_date = datetime.strptime("14 Mai 2014", '%d %m %Y')
iso_date = test_date.isoformat()

我得到这个错误:

1
ValueError: time data '14 Mai 2014' does not match format '%d %m %Y'


根据python strftime reference %m的意思,在您的情况下,"mai"似乎是当前区域中的月份名称,您必须使用此%b格式。所以你的代码应该是这样的:

1
2
test_date = datetime.strptime("14 Mai 2014", '%d %b %Y')
iso_date = test_date.isoformat()

别忘了设置区域设置。

对于英语地区,它可以工作:

1
2
3
4
>>> from datetime import datetime
>>> test_date = datetime.strptime("14 May 2014", '%d %b %Y')
>>> print(test_date.isoformat())
2014-05-14T00:00:00


您需要使用%b令牌而不是%m。要使用%b令牌,必须设置一个区域设置。python文档

1
2
3
4
5
6
import datetime
import locale

locale.setlocale(locale.LC_ALL, 'fr_FR')
test_date = datetime.datetime.strptime("14 Mai 2014", '%d %b %Y')
iso_date = test_date.isoformat()

结果将是'2014-05-14T00:00:00'