Jor*_*elf 9 python datetime date
我正在尝试生成一个随机日期,并在该日期添加几天,但我面临这个错误.我想这与我约会的格式有关但我找不到解决方案.
我以为是因为我需要日期和月份的两位数字,这是我的代码产生错误.
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")
Run Code Online (Sandbox Code Playgroud)
对我做错了什么的想法?
谢谢
jon*_*rpe 17
因为%y是一个两位数的年份,所以2015被解释为20(ie 2020)并且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
Run Code Online (Sandbox Code Playgroud)
你想要%Y(注意案例!),这是一个四位数的年份:
>>> datetime.datetime.strptime("01/02/2015", "%d/%m/%Y")
datetime.datetime(2015, 2, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
您应该阅读文档,其中解释了各种格式指令.
但是,涉及字符串的额外步骤似乎毫无意义,为什么不直接传递您创建的整数datetime.datetime?
>>> import random
>>> random.seed(0)
>>> datetime.datetime(2015, random.randint(2, 4), random.randint(1, 31))
datetime.datetime(2015, 4, 24, 0, 0)
Run Code Online (Sandbox Code Playgroud)
请注意,这可能会生成无效日期(例如,二月没有30日!):
>>> random.seed(8)
>>> datetime.datetime(2015, random.randint(2, 4), random.randint(1, 31))
Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
datetime.datetime(2015, random.randint(2, 4), random.randint(1, 31))
ValueError: day is out of range for month
Run Code Online (Sandbox Code Playgroud)