【问题标题】:Python - Time data not match formatPython - 时间数据与格式不匹配
【发布时间】:2016-12-16 14:05:00
【问题描述】:

我有以下格式的字符串时间

2016-12-10T13:54:15.294

我正在使用以下方法来格式化时间:

time.strptime(ts, '%b %d %H:%M:%S %Y')

这会引发错误:
time data did not match format: data=2016-12-10T13:54:15.294 fmt=%a %b %d %H:%M:%S %Y

任何想法我哪里出错了?

【问题讨论】:

    标签: python strptime


    【解决方案1】:

    您需要先将字符串按其格式解析,然后以您想要的方式打印出来。

    >>> import datetime
    >>> ts = "2016-12-10T13:54:15.294"
    >>> parsed = datetime.datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%f')
    >>> parsed
    datetime.datetime(2016, 12, 10, 13, 54, 15, 294000)
    >>> parsed.strftime('%b %d %H:%M:%S %Y')
    'Dec 10 13:54:15 2016'
    

    【讨论】:

    • 谢谢。我跟着这个,现在又遇到了另一个错误:KeyError: 'f'
    • 更多信息:Python 2.3.4
    • 哇。蟒蛇2.3!我什至不知道这样的版本仍然存在。它不起作用的原因是f 修饰符是在 Python 2.6 中添加的 - 我强烈建议您升级。
    • 感谢您的指示,我确实应用了一种解决方法,它对我有用。我知道 2.3 很旧,但这是旧系统,不能简单地升级而不访问完整的影响!。
    【解决方案2】:

    我认为您在字符串中指定的日期格式不正确。这应该有效:

    import datetime
    a = '2016-12-10T13:54:15.294'
    b= datetime.datetime.strptime(a,'%Y-%m-%dT%H:%M:%S.%f')
    print b
    

    【讨论】:

      【解决方案3】:

      错误没有错,格式字符串甚至与您尝试解析的字符串都不接近。

      您有{year}-{month}-{day}T{hour}:{minute}:{second}.{milliseconds},但试图用{weekday name} {month name} {day} {hour}:{minute}:{second} {year} 解析它。你是从某个地方复制的吗?

      According to the documentation,你的格式字符串应该更像%Y-%m-%dT%H:%M:%S.%f

      >>> time.strptime('2016-12-10T13:54:15.294', '%Y-%m-%dT%H:%M:%S.%f')
      time.struct_time(tm_year=2016, tm_mon=12, tm_mday=10, tm_hour=13, tm_min=54, tm_sec=15, tm_wday=5, tm_yday=345, tm_isdst=-1)
      

      【讨论】:

        【解决方案4】:

        您的格式字符串不正确。

        您可以仅使用日期对象的strftime 方法检查格式字符串。例如:

        d = datetime.datetime.now()
        print(d.strftime('%Y-%d-%mT%H:%M:%S'))
        

        输出:

        Dec 16 11:02:46 2016
        

        但是你有以下格式的字符串2016-12-10T13:54:15.294,所以你只需要更改format字符串:

        print(time.strptime(ts, '%Y-%d-%mT%H:%M:%S.%f'))
        

        输出:

        time.struct_time(tm_year=2016, tm_mon=10, tm_mday=12, tm_hour=13, tm_min=54, tm_sec=15, tm_wday=2, tm_yday=286, tm_isdst=-1)
        

        【讨论】:

          猜你喜欢
          • 2021-12-08
          • 1970-01-01
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-31
          相关资源
          最近更新 更多