Поскольку %y
является для двузначного года, так 2015
интерпретируется как 20
(т.е. 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
Вы хотите %Y
(примечание случай!), который представляет собой четырехзначный год:
>>> datetime.datetime.strptime("01/02/2015", "%d/%m/%Y")
datetime.datetime(2015, 2, 1, 0, 0)
Вы должны прочитать the docs, в котором объясняются различные директивы формата.
Однако дополнительные шаги, связанные строки кажутся бессмысленными, почему бы не просто передать целые числа вы создаете для 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)
Обратите внимание, что это может генерировать недействительные даты (например февраля не имеет 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
Поскольку '% y' является для ** двузначного года **, например, '20' ->' 2020'; '% Y' (примечание кейс!) - четыре цифры. Но почему бы вам просто не использовать 'datetime.datetime (2015, randint (2, 4), randint (1, 31))' (обратите внимание, что не все месяцы февраля-апреля имеют 31 день ...)? – jonrsharpe
Смутно назвав ваши переменные как опечатки друг друга? – tripleee
@jonrsharpe спасибо! да, вы правы, все, что вы видите, это просто я пытаюсь найти ошибку. – JordanBelf