未转换的数据仍然存在:15

时间:2015-02-11 14:14:20

标签: python date datetime

我正在尝试生成一个随机日期并在该日期添加几天,但我遇到了这个错误。我想这与我的日期格式有关,但我找不到解决方案。

我认为这是因为我需要日期和月份的两位数字,这是我的代码产生错误。

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")

对我做错了什么的任何想法?

由于

1 个答案:

答案 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)