Я начал с списка дней рождения, которые выглядят так: 01/01/1900 и я назвал dob. Я хочу рассчитать их текущий возраст в годах, вычитая текущее время. Так что я сделал следующее:Как я могу вычесть сегодняшнее datetime из списка datetime, чтобы найти возраст людей?
from datetime import datetime
parsed_date = [datetime.strptime(x, '%m/%d/%Y') for x in dob]
now = datetime.now()
age = now - parsed_date
parsed_date список из
[datetime.datetime(1984, 11, 11, 0, 0),
datetime.datetime(1980, 10, 2, 0, 0),
datetime.datetime(1991, 5, 13, 0, 0),
datetime.datetime(1982, 8, 28, 0, 0), ... ]
К сожалению, для возраста я получаю следующую ошибку:
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'list'
Я не понимаю, почему эта ошибка появляется, если она выглядит так, как будто я вычитаю два времени, чтобы получить timedelta. Если я индивидуально
now - datetime(1984, 11, 11, 0, 0)
, то это работает, но если я
now - datetime.datetime(1984, 11, 11, 0, 0)
Я получаю эту ошибку:
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
Ну ошибка довольно ясно, что вы пытаетесь вычесть DateTime с объектом списка, вам нужно перебирать объекты даты и времени в списке и вычесть DateTime из этой записи – EdChum
использовать список понимание, чтобы сделать это как ответ @ Патрика. Вы получаете 'AttributeError', потому что у вас есть' from datatime import datetime' где-то, поэтому 'datetime.datetime (1984, 11, 11, 0, 0)' пытается получить доступ к атрибуту класса 'datetime.datetime' который не имеет одного (в отличие от объекта модуля). – martineau