【问题标题】:time data '2019-06-02T16:19:27.000-04:00' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'时间数据“2019-06-02T16:19:27.000-04:00”与格式“%Y-%m-%dT%H:%M:%S.%fZ”不匹配
【发布时间】:2020-04-03 02:41:47
【问题描述】:

执行此操作时出现上述错误:

datetime.strptime(item['dt'], "%Y-%m-%dT%H:%M:%S.%fZ")

即使我尝试:

datetime.strptime(item['dt'], "%Y-%m-%dT%H:%M:%S.%f")

我收到 未转换的数据仍然存在:-04:00 作为我的错误。

我做错了什么?

【问题讨论】:

    标签: python mongodb datetime pymongo strptime


    【解决方案1】:

    根据format codes for datetime.strptime,您应该使用%z 来表示UTC 偏移量:

    datetime.strptime('2019-06-02T16:19:27.000-04:00', "%Y-%m-%dT%H:%M:%S.%f%z")
    

    【讨论】:

    • 我仍然收到此错误:time data '2019-06-02T16:19:27.000-04:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
    • 也许你在某个地方有错字。请看演示:repl.it/@blhsing/SupportiveHarmoniousRuby
    • 这就是我所拥有的:for item in db_mongo:created_dt = datetime.strptime(item['created_dt'], "%Y-%m-%dT%H:%M:%S.%f%z")
    • 您使用的是哪个 Python 版本?
    • 我使用的是 Python 3.6.8
    【解决方案2】:

    这是因为 UTC 偏移量是 04:00 而不是 0400...试试这个:

    datetime.datetime.strptime('2019-06-02T16:19:27.000-0400', "%Y-%m-%dT%H:%M:%S.%f%z")
    

    输出:

    datetime.datetime(2019, 6, 2, 16, 19, 27, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000)))
    

    %z 期待类似 hhmm 的东西

    https://docs.python.org/3/library/datetime.html - 查看格式代码

    【讨论】:

    • dt.datetime.strptime('2019-06-02T16:19:27.000-04:00', "%Y-%m-%dT%H:%M:%S.%f%z") 失败。相反,您建议他们必须编辑每个日期时间的最后一个冒号?
    • 我指出它失败的原因以及它应该如何。如果他们想使用此方法,则必须正确格式化输入。此外,无论如何编辑字符串也不会太难。
    • 当然,但是有一百万个字符串,它可能会非常昂贵:) 我不确定dateutil 是否会处理这个问题,或者你是否可以在最后标记一个pytz 组件,所以它可能是最有效的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多