YardalGedal
@YardalGedal
yeah boy

Как корректно рассчитывать время между датами datetime?

Имею следующую дату, например: 2006-10-01 (гггг-мм-дд).
Мне нужно рассчитать количество лет, месяцев и дней между приведенной датой и текущей.
Перепробовал много вариантов, однако datetime почему-то не учитывает високосные года.
Приведу пример моего кода:
date = "2006-09-23"
date_object = datetime.datetime.strptime(date, "%Y-%m-%d")
delta = datetime.datetime.now() + datetime.timedelta(seconds=-date_object.timestamp()
return 'Аккаунт зарегистрирован: ' + date + '\n' + str(int(delta.strftime('%Y')) - 1970) + ' лет, ' + str(int(delta.strftime('%m')) - 1) + ' месяцев, ' + str(int(delta.strftime('%d')) - 1) + ' дней.'

Если между датами был один високосный год -- я получаю один лишний день при расчете, два високосных года -- два лишних дня.
То есть фактически на текущий момент между датами прошло 10 лет, 3 месяца, 29 дней, однако моя программа возвращает что между датами прошло 10 лет, 4 месяца, 1 день. Корректно она отрабатывает лишь если между датами не было високосных годов.
Как решить эту проблему?
  • Вопрос задан
  • 1374 просмотра
Пригласить эксперта
Ответы на вопрос 1
@id2669099
Вот тут утверждают о существовании модуля calendar, который учитывает високосные годы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы