【问题标题】:ValueError: time data '2020-04-23T13:03:49.911533+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z' [duplicate]ValueError:时间数据'2020-04-23T13:03:49.911533 + 00:00'与格式'%Y-%m-%dT%H:%M:%S.%f%z'不匹配[重复]
【发布时间】:2020-05-07 11:53:04
【问题描述】:

我正在尝试修复我构建的某些脚本不断弹出的错误。我基本上在做的是从 Postgres 数据库中检索一些数据,其中包含一个 timestamptz 字段。

当我处理该数据时,有时会收到以下错误:

ValueError: time data '2020-04-23T13:03:49.911533+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

发生的代码:

last_seen_at_date = datetime.strptime(dict['last_seen_at'],'%Y-%m-%dT%H:%M:%S.%f%z').date()

我不明白这是怎么发生的。 当我复制粘贴此字符串并将其用作变量然后将其转换为日期时,它可以完美运行。

编辑:意识到这在我的 Mac 上运行良好,但在我在 Ubuntu 上运行的服务器上却不行。不知道如何解决这个问题。

知道发生了什么吗?

谢谢,

【问题讨论】:

  • 你可以检查dateutilparser是否适合你

标签: python datetime timestamp


【解决方案1】:

'2020-04-23T13:03:49.911533+00:00'

这看起来确实像 ISO 8601 格式,所以它应该适用于 datetime.datetime.fromisoformat。我确实使用 Python 3.7.3 对其进行了测试,它似乎可以正常工作:

import datetime
dt_str ='2020-04-23T13:03:49.911533+00:00'
dt = datetime.datetime.fromisoformat(dt_str)
print(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)

输出:

2020 4 23 13 3 49

你能在你的代码中测试它吗?

【讨论】:

  • 谢谢@daweo!意识到这在我的 Mac 上运行良好,但在我在 Ubuntu 上运行的服务器上却不行。不知道如何解决这个问题。
【解决方案2】:

使用现有答案修复了该问题。 这是我的服务器上运行的不同版本的 Python 的问题。

Datetime strptime issue with a timezone offset with colons

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2017-03-05
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多