【问题标题】:Bad directive in format '%' datetime.strptime格式为“%”的错误指令 datetime.strptime
【发布时间】:2019-07-21 10:48:37
【问题描述】:

当我尝试将 str 的格式更改为日期时间时,我面临 ValueError,

这可能是一个简单的问题,但在 google 或 stackoverflow 上也找不到解决方案,我发现一些关于 'z' 的解决方案是格式错误的指令,但不是 '%' one

current_session.date = datetime.strptime('2019-06-16 00:02', '%Y-%B-%d% %H:%M')



Traceback (most recent call last):
  File "/home/rambod/PycharmProjects/mailWatcher/smtpINWatcher.py", line 92, in <module>
    current_session.date = datetime.strptime('2019-06-16 00:02', '%Y-%B-%d% %H:%M')
  File "/usr/lib/python3.7/_strptime.py", line 577, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "/usr/lib/python3.7/_strptime.py", line 351, in _strptime
    (bad_directive, format)) from None
ValueError: '%' is a bad directive in format '%Y-%B-%d% %H:%M'

【问题讨论】:

  • 你有一个额外的 % 在 'd' 之后

标签: python datetime strptime


【解决方案1】:

试试:

current_session.date = datetime.strptime('2019-06-16 00:02', '%Y-%B-%d %H:%M')

(注意在d之后删除了额外的%。)

编辑:
以上内容仍然不正确,因为%B 是完整的月份名称,因此您应该尝试:

current_session.date = datetime.strptime('2019-06-16 00:02', '%Y-%m-%d %H:%M')

【讨论】:

  • 尝试自己执行代码,反正这个模式是错误的:)
【解决方案2】:

%B 是月份作为语言环境的全名。喜欢

一月、二月、……、十二月(zh_CN); 一月、二月、……、十二月 (de_DE)

你的例子

In [25]: date = datetime.strptime('2019-06-16 00:02', '%Y-%m-%d %H:%M')                                                                                                                       

In [26]: date                                                                                                                                                                                 
Out[26]: datetime.datetime(2019, 6, 16, 0, 2)

https://docs.python.org/3/library/datetime.html

【讨论】:

    【解决方案3】:

    %d 后面多了一个% 符号,这就是原因。但是,对于您尝试解析的字符串,该模式仍然是错误的 - %B 代表完整的月份名称,而不是数字。我想%m 是你需要的:

    datetime.strptime('2019-06-16 00:02', '%Y-%m-%d %H:%M')
    

    Here's 很好地描述了strftime 的工作原理。或者查看Python docs获取更详细的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      相关资源
      最近更新 更多