python 亚秒级的 strptime 正确格式

python strptime correct format for sub seconds

我的日期时间数据是这样的:

2016-03-01 19:25:53.053404

我正在尝试使用

datetime.strptime(date, "%Y-%m-%d %HH:%MM:%SS")

但是我得到这个错误:

ValueError: time data '2016-03-01 19:24:35.165425' does not match format '%Y-%m-%d %HH:%MM:%SS'

如何修改格式“%Y-%m-%d %HH:%MM:%SS”以匹配我的日期时间格式?

这是正确的格式:

datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')

细分:

  • %H:小时(24 小时制)作为零填充的十进制数。
  • %M:以零填充的十进制数表示的分钟。
  • %S:秒为补零的十进制数。
  • %f:微秒为十进制数,左边补零。

您不需要在格式字符串中包含小时、秒和分钟两个字符; %S 是 "Second as a zero-padded decimal number",%H 是“小时(24 小时制)作为零填充的十进制数。”,等等。还值得注意的是,您完全缺少符号微秒 (%f)。如果你想让你的 format_string 工作,你应该添加它。

这里是link到strftime() and strptime() behavior documentation

Per the documentation(如果您计划使用 python 日期和时间进行任何重要工作,我建议将 link 添加为书签),零填充时间的正确指令,分钟和秒分别是 %H%M%S(没有双字符)

此外,您的输入字符串包含微秒,因此您需要从输入中删除这些微秒或同时包含 %f 指令。

因此:datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f')