5

我有一些日期格式d/m/yyyy(例如 1987 年 2 月 28 日)。我想要 ISO 格式:1987-02-28

我认为我们可以这样做,但它似乎有点沉重:

str_date = '2/28/1987'
arr_str = re.split('/', str_date)
iso_date = arr_str[2]+'-'+arr_str[0][:2]+'-'+arr_str[1]

有没有另一种方法可以用 Python 做到这一点?

4

3 回答 3

17

您可以使用该datetime模块

datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat()

或者,作为运行代码:

>>> import datetime
>>> str_date = '2/28/1987'
>>> datetime.datetime.strptime(str_date, '%m/%d/%Y').date().isoformat()
'1987-02-28'
于 2012-10-07T19:27:24.020 回答
6

我会使用该datetime模块来解析它:

>>> from datetime import datetime
>>> date = datetime.strptime('2/28/1987', '%m/%d/%Y')
>>> date.strftime('%Y-%m-%d')
'1987-02-28'
于 2012-10-07T19:27:28.927 回答
1

你所拥有的几乎是我写它的方式,我可以建议的唯一主要改进是使用普通的 oldsplit而不是re.split,因为你不需要正则表达式:

arr_str = str_date.split('/')

如果您需要做任何更复杂的事情,我会推荐time.strftime,但这比字符串抨击要贵得多

于 2012-10-07T19:27:13.100 回答