【问题标题】:Python: time data does not match formatPython:时间数据与格式不匹配
【发布时间】:2021-12-08 03:43:23
【问题描述】:

当我运行代码时,我得到了这个错误:

ValueError: 时间数据 '2021-10-26T10:15:00.000+04:00' 与格式 '%Y-%m-%dT%H:%M:%S.%f%z' 不匹配

格式似乎是正确的,有什么问题?有人遇到同样的问题吗?

我正在使用这种方法

# Convert 2019-09-03T12:31:03.806+0400 to 2019-09-13 16:30:12
def time_converter(time):
    if time is None:
        time = ''
    else:
        time_obj = datetime.strptime(time, '%Y-%m-%dT%H:%M:%S.%f%z')
        time = time_obj.strftime('%Y-%m-%d %H:%M:%S')
    return time

我只是用这种格式给它时间2021-10-26T10:15:00.000+04:00

【问题讨论】:

  • 这适用于我在 python 3.8 datetime.datetime.strptime('2021-10-26T10:15:00.000+04:00', '%Y-%m-%dT%H:%M:%S.%f%z')
  • @shotikoj,请发布您遇到问题的实际代码。
  • 能否请您添加您的 Python 版本?

标签: python datetime time format match


【解决方案1】:

您的代码为我工作没有错误,但在您的 Python 版本中,您可能需要在时区将 ':' 替换为 '':

2021-10-26T10:15:00.000+04:00 2019-09-03T12:31:03.806+0400

【讨论】:

  • 您可以添加选项如何来替换最右边的:,例如'2021-10-26T10:15:00.000+04:00'[::-1].replace(':','',1)[::-1]。
  • 来自官方文档:“3.7 版更改:当 %z 指令提供给 strptime() 方法时,UTC 偏移量可以使用冒号作为小时、分钟和秒之间的分隔符。 "
【解决方案2】:

问题在于 Python 版本。运行代码的远程服务器有 Python 3.6。正如 tromgy 在这里评论的那样, %z 指令是在 3.7 中添加的

【讨论】:

  • 欢迎来到 Stack Overflow,shotioj。请阅读What should I do when someone answers my question?。您不必为了确认另一个答案确实正确而发布答案。而是接受对您最有帮助的答案(和/或投票)。
  • 再想一想,这可能是一个极端情况,因为 tromgy 只发表了评论,而其他答案也没有包含完整的解决方案。也许您可以稍微扩展您的答案以包含所有相关信息并添加一个有效的解决方案。这可能是一个很好的答案:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
相关资源
最近更新 更多