【问题标题】:time data '2017-09-05 18:32:38.159+00' does not match format '%Y-%m-%d %H:%M:%S.%f%z'时间数据 '2017-09-05 18:32:38.159+00' 与格式 '%Y-%m-%d %H:%M:%S.%f%z' 不匹配
【发布时间】:2018-12-30 00:38:33
【问题描述】:

ValueError: 时间数据 '2017-09-05 18:32:38.159+00' 与格式 '%Y-%m-%d %H:%M:%S.%f%z' 不匹配 我怎样才能适应“+00”?

【问题讨论】:

  • 嘿,我的回答是否有助于解决这个问题。如果是,请标记为正确。

标签: python python-3.x datetime format valueerror


【解决方案1】:

我认为问题在于%f。它应该在左边补零。

%f 十进制数形式的微秒,左侧补零。 000000

正如下面的评论中所述,%z 期望格式为 +0000-0000

%z UTC 偏移量,格式为 +HHMM 或 -HHMM(如果对象是 naive 则为空字符串)。

例如以下作品:

from time import strptime

string = strptime('2017-09-05 18:32:38.00159+0000', '%Y-%m-%d %H:%M:%S.%f%z')

http://strftime.org/

【讨论】:

  • 另外,%z 匹配 +HHMM-HHMM 形式的 UTC 偏移量。所以+00 需要改成+0000 之类的东西。 (例如datetime.datetime.strptime('2017-09-05 18:32:38.159000+0000', '%Y-%m-%d %H:%M:%S.%f%z'))。
  • 我认为如果其他一切都在正确的位置,它可能会选择+00。我认为它没有?另外我不确定“如果对象是天真的,则为空字符串”是什么意思。
  • 它必须完全采用+HHMM-HHMM 的形式。对于更灵活的日期时间字符串解析,OP 可以使用dateutil。然后dateutil.parser.parse('2017-09-05 18:32:38.159+00') 就可以了。
  • 是的,我刚刚测试过它只适用于所有数字,我之前在时间字符串上看到过+00,这就是我不确定的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-29
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多