【问题标题】:Format date without dash?格式化没有破折号的日期?
【发布时间】:2015-03-27 07:28:44
【问题描述】:

在 Python 中,我们可以通过以下方式将日期转换为字符串:

>>> import datetime
>>> datetime.date(2002, 12,4).isoformat()
'2002-12-04'

我们如何将输出格式化为“20021204”,即没有破折号?

有两个函数,但不知道如何指定格式:

date.strftime(format)
返回一个表示日期的字符串, 由显式格式字符串控制。格式代码参考 小时、分钟或秒将看到 0 值。如需完整列表 格式化指令,请参阅 strftime()strptime() Behavior 部分。

date.__format__(format)
date.strftime() 相同。这使它 可以在使用时为日期对象指定格式字符串 str.format()。请参阅 strftime()strptime() 行为部分。

【问题讨论】:

    标签: python date


    【解决方案1】:

    您在工作中使用了错误的工具,请使用strftime

    >>> datetime.date(2002, 12,4).strftime("%Y%m%d")
    '20021204'
    

    有关使用strftimestrptime的详细信息,请参阅strftime() and strptime() Behavior

    对于您的具体情况,我将引用相关摘录

    • %Y 年,世纪为十进制数。 1970、1988、2001、2013
    • %m 月份作为一个零填充的十进制数。 01, 02, ..., 12
    • %d 以零填充十进制数表示的月份中的某天。 01, 02, ..., 31

    或者,您可以始终删除或替换 isoformat 中的连字符

    >>> str(datetime.date(2002, 12,4)).translate(None,'-')
    '20021204'
    

    【讨论】:

      【解决方案2】:

      您可以使用'%m%d%Y 作为您的格式:

      >>> d=datetime.date(2002, 12,4)
      >>> d.strftime('%m%d%Y')
      '12042002'
      

      或者在你的第一个代码中,你可以使用str.replace

      >>> datetime.date(2002, 12,4).isoformat().replace('-','')
      '20021204'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-19
        • 2022-10-07
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        • 2021-05-02
        • 1970-01-01
        相关资源
        最近更新 更多