Python: получить количество лет, прошедших с даты строки - PullRequest
1 голос
/ 14 марта 2011

Учитывая, что я начинаю со строки, например '3/6/2011', то есть месяц / день / год, а текущий день - 13.03.2011 (7 дней спустя), как я могу найти количество прошедших лет? с того времени (7/365 = 0.0191780821917808) в Python?

Обратите внимание, что я хочу обрабатывать любую введенную дату. Хотя не в любом формате, вы можете принять формат выше.

Ответы [ 3 ]

7 голосов
/ 14 марта 2011

Вы можете получить timedelta, вычитая два datetime с, что дает вам множество интересных способов работать с разницей во времени.

>>> import datetime
>>> before = datetime.datetime.strptime('3/6/2011','%m/%d/%Y')
>>> now = datetime.datetime.now()
>>> type(now-before)
<type 'datetime.timedelta'>
>>> (now-before).days
7
>>> float((now-before).days)/365
0.019178082191780823

РЕДАКТИРОВАТЬ: Ух ты, кто бы мог подумать, что в этом простом вопросе так много глубины.Посмотрите на ответ с наибольшим количеством голосов на этот вопрос .Работа с високосными годами - «трудная» проблема.(Кредит @kriegar)

1 голос
/ 14 марта 2011

Все ответы выше не учитывают високосные годы.И похоже, что этот вопрос имеет обсуждение, которое имеет отношение к вашему вопросу.

Питоническая разница между двумя датами в годах?

1 голос
/ 14 марта 2011
>>> import datetime
>>> datestring = "3/6/2011"
>>> (datetime.date.today() - datetime.datetime.strptime(datestring, "%m/%d/%Y").date()).days / 365.0
0.019178082191780823
...