【问题标题】:python strptime correct format for sub seconds [duplicate]亚秒的python strptime正确格式[重复]
【发布时间】:2016-06-15 22:52:11
【问题描述】:

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

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”格式以匹配我拥有的日期时间格式?

【问题讨论】:

  • 谢谢@bmcculley。我认为自从 6 年前发布另一个问题以来,python 给出的错误已经改变,所以我找不到其他答案。

标签: python datetime strptime


【解决方案1】:

您不需要在格式字符串中包含小时、秒和分钟两个字符; %S 是“秒作为零填充十进制数”,%H 是“小时(24 小时制)作为零填充十进制数。”等等。另外值得注意的是,你完全错过了微秒符号 (%f)。如果您希望您的 format_string 工作,您应该添加它。

这是strftime() and strptime() behavior documentation的链接

【讨论】:

    【解决方案2】:

    这是正确的格式:

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

    细分:

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

    【讨论】:

      【解决方案3】:

      Per the documentation(如果您打算使用 python 日期和时间做任何重要的工作,我建议将该链接加入书签),零填充小时、分钟和秒的正确指令是 %H、@987654323 @ 和 %S,分别为(无双字符)

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 2014-02-04
        • 2012-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        相关资源
        最近更新 更多