【问题标题】:How can I format date in ISO using Python?如何使用 Python 在 ISO 中格式化日期?
【发布时间】:2012-09-28 03:11:39
【问题描述】:

我有一些日期格式为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 做到这一点?

【问题讨论】:

  • 我有大量的日期列表,所以我的第一个选择是在 LibreOffice 等电子表格编辑器中复制/粘贴,然后更改格式单元格以设置正确的格式,但这不起作用。 .

标签: python date iso


【解决方案1】:

你可以使用datetime module:

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'

【讨论】:

    【解决方案2】:

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

    >>> from datetime import datetime
    >>> date = datetime.strptime('2/28/1987', '%m/%d/%Y')
    >>> date.strftime('%Y-%m-%d')
    '1987-02-28'
    

    【讨论】:

    • .isoformat() 在日期上使用相同的格式化字符串 OOTB。 :-)
    【解决方案3】:

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

    arr_str = str_date.split('/')
    

    如果您需要执行更复杂的操作,我会推荐 time.strftime,但这比字符串攻击要更多昂贵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-13
      • 2023-01-03
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多