我正在尝试生成一个随机日期并在该日期添加几天,但我遇到了这个错误。我想这与我的日期格式有关,但我找不到解决方案。
我认为这是因为我需要日期和月份的两位数字,这是我的代码产生错误。
start_day = randint(1,31)
strt_day = []
strt_day.append("%02d" % start_day)
start_day = strt_day
strt_moth = []
start_month = randint(2,4)
strt_moth.append("%02d" % start_month)
start_month = strt_moth
start_date = ""+start_month[0]+"/"+start_day[0]+"/2015"
depart = datetime.datetime.strptime(start_date, "%m/%d/%y")
对我做错了什么的任何想法?
由于
答案 0 :(得分:11)
由于%y
适用于两位数年份,因此2015
被解释为20
(即2020
)和{{ 1}}遗留下来:
15
你想要>>> import datetime
>>> datetime.datetime.strptime("01/02/20", "%d/%m/%y")
datetime.datetime(2020, 2, 1, 0, 0)
>>> datetime.datetime.strptime("01/02/2015", "%d/%m/%y")
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
datetime.datetime.strptime("01/02/2015", "%d/%m/%y")
File "C:\Python27\lib\_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: 15
(注意案例!),这是一个四位数的年份:
%Y
您应该阅读the docs,其中解释了各种格式指令。
然而,涉及字符串的额外步骤似乎毫无意义,为什么不将您创建的整数传递给>>> datetime.datetime.strptime("01/02/2015", "%d/%m/%Y")
datetime.datetime(2015, 2, 1, 0, 0)
?
datetime.datetime
请注意,这可能会生成无效日期(例如,二月没有30日!):
>>> import random
>>> random.seed(0)
>>> datetime.datetime(2015, random.randint(2, 4), random.randint(1, 31))
datetime.datetime(2015, 4, 24, 0, 0)