2

我相信我错过了一些微不足道的东西。在阅读了所有关于strptime ValueError但我觉得格式似乎正确的问题后,这是我得到的以下错误

Traceback (most recent call last):
  File "loadScrip.py", line 18, in <module>
    nextDate = datetime.datetime.strptime(date, "%Y/%m/%d")
  File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '20l2/08/25' does not match format '%Y/%m/%d'

我在 Linux x86_64 下使用 Python 2.6.6。任何帮助都感激不尽。

4

2 回答 2

9

您的错误表明您的数据带有字母l(小写 L)而不是1年份中的数字:

ValueError: time data '20l2/08/25' does not match format '%Y/%m/%d'

这不是符合请求格式的有效日期;替换lwith1和输入日期就可以了:

>>> import datetime
>>> datetime.datetime.strptime('20l2/08/25', "%Y/%m/%d")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mj/Development/Libraries/buildout.python/parts/opt/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '20l2/08/25' does not match format '%Y/%m/%d'
>>> datetime.datetime.strptime('2012/08/25', "%Y/%m/%d")
datetime.datetime(2012, 8, 25, 0, 0)

修正您的输入,格式正确。

于 2013-09-09T21:56:35.327 回答
-1

以下是使用字符串变量的方法:

>>> start_day = 2015188
>>> print start_day
2015188
>>> print conv
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=188, tm_isdst=-1)
>>> conv = time.strptime( str(start_day), "%Y%j" )
>>> print conv
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=188, tm_isdst=-1)

无论出于何种原因,您都必须将字符串变量放在 str() 事物中,而我在网上找到的所有示例都仅在引号中显示日期。

于 2015-06-25T18:40:56.987 回答