Целочисленная разница в питоне между двумя датами
У меня есть RTFM, и я прочитал много вопросов и ответов здесь по поводу этого и был счастлив использовать strftime и strptime вчера, поэтому я бы поклялся, что это должно работать, но это не так.
Я просто хочу целое число. Не "объект timedelta". Не "осведомленный пока хешируемый объект" (см. я RTFM). Не кортеж. Не словарь. Просто простое целое число, поэтому я могу использовать оператор if и ветку и быть счастливым. Пожалуйста, принесите свет вашей мудрости, спасибо.
Вот что я
...
import datetime
mdate = "2010-10-05"
rdate = "2010-10-05"
mdate1 = datetime.strptime(mdate, "%Y-%m-%d")
rdate1 = datetime.strptime(rdate, "%Y-%m-%d")
delta = datetime.timedelta.days(mdate1 - rdate1)
Вот что я получаю:
pmain.py:4: AttributeError: 'module' object has no attribute 'strptime'
(error hits in the 'mdate1..." line above)
И это не значит, что моя дельта-линия будет работать - пожалуйста, посмотрите и на этот.
Ответы
Ответ 1
Вы хотите получить classmethod datetime.datetime.strptime()
, затем возьмите атрибут .days
из полученного timedelta:
import datetime
mdate = "2010-10-05"
rdate = "2010-10-05"
mdate1 = datetime.datetime.strptime(mdate, "%Y-%m-%d").date()
rdate1 = datetime.datetime.strptime(rdate, "%Y-%m-%d").date()
delta = (mdate1 - rdate1).days
Итак, у вас есть модуль datetime
, который имеет класс datetime.datetime
, который, в свою очередь, имеет на нем метод datetime.datetime.strptime()
. Я также добавил призывы к .date()
, чтобы извлечь только часть даты (результат - экземпляр datetime.date
); это позволяет справляться с отметками времени, которые отличаются чуть менее чем на 24 часа.
Демо:
>>> import datetime
>>> mdate = "2010-10-05"
>>> rdate = "2010-10-05"
>>> mdate1 = datetime.datetime.strptime(mdate, "%Y-%m-%d").date()
>>> rdate1 = datetime.datetime.strptime(rdate, "%Y-%m-%d").date()
>>> delta = (mdate1 - rdate1).days
>>> print delta
0
>>> type(delta)
<type 'int'>
Ответ 2
sign1['days'] = sign1['diff'] / np.timedelta64(1, 'D')
У меня была та же проблема, и она была решена с помощью приведенного выше утверждения. Я надеюсь, что это помогает.
Ответ 3
большое спасибо, что работает Может быть применен к датафреймам