【问题标题】:ValueError: time data does not match format when parsing a dateValueError:解析日期时时间数据与格式不匹配
【发布时间】:2019-07-08 15:59:49
【问题描述】:

当我尝试将字符串解析为日期时间时,我会这样做(之前已导入日期时间):

fecha_2 = datetime.strptime('22/01/2019 17:00', '%d/%m/%y %H:%M')

但是,我收到此错误

ValueError: 时间数据 '22/01/2019 17:00' 与格式 '%d/%m/%y %H:%M' 不匹配

有人知道为什么吗?

【问题讨论】:

  • 小写 'y' 表示 2 位数年份而不是 4 位数年份

标签: python date datetime time format


【解决方案1】:

y 应大写。这在 Python 文档中被引用 here

这很好用

fecha_2 = datetime.strptime('22/01/2019 17:00', '%d/%m/%Y %H:%M')

【讨论】:

    【解决方案2】:

    您需要使用大写字母 Y 表示 4 位数年份(小写 y 表示 2 位数年份,例如 19)。所以:

    >>> fecha_2 = datetime.strptime('22/01/2019 17:00', '%d/%m/%Y %H:%M')
    >>> fecha_2
    datetime.datetime(2019, 1, 22, 17, 0)
    

    strptime docs

    【讨论】:

      【解决方案3】:

      以上是正确的。但是,为避免此类错误,您可以使用 dateutil.parser,它可以自动猜测正确的格式字符串。你可以通过 pip install python-dateutil 来安装它

      >>> from dateutil import parser
      >>> parser.parse("2018-06-19 11:21:13.311")
      datetime.datetime(2018, 6, 19, 11, 21, 13, 311000)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 2018-02-15
        • 2022-06-10
        • 1970-01-01
        • 2022-08-19
        相关资源
        最近更新 更多