Если у меня есть две даты (например, '8/18/2008'
и '9/26/2008'
), как лучше всего узнать количество дней между этими двумя датами?
508
Если у вас есть два объекта даты, вы можете просто вычесть их, что вычисляет timedelta
объект.
from datetime import date
d0 = date(2008, 8, 18)
d1 = date(2008, 9, 26)
delta = d1 - d0
print(delta.days)
Соответствующий раздел документации: https://docs.python.org/library/datetime.html .
Посмотрите этот ответ для другого примера.
np.datetime64
вpython datetime
stackoverflow.com/questions/52982056/…Используя силу даты и времени:
источник
date
все еще не хватает своего собственного эквивалентаstrptime()
.strptime
вformat
ARG? Должно быть ясно с первой датой arg, которая имеет формат.Дни до Рождества:
Больше арифметики здесь .
источник
Вы хотите модуль datetime.
Другой пример:
Как указано здесь
источник
delta = today - last_year
print(delta.days)
источник
abs()
, что полезно, если сравниваемые даты заранее неизвестны, и это интересует вас. Если ваша вторая датаdatetime.strptime(date, date)
позже, чем первая, результат будет отрицательным.abs()
делает весь ввод абсолютным (т.е. положительным).Это также может быть легко сделано с
arrow
:Для справки: http://arrow.readthedocs.io/en/latest/
источник
без использования Lib просто чистый код:
источник
все отлично ответили, используя дату, позвольте мне ответить на нее с помощью панд
Это даст ответ. В случае, если одним из входных данных является столбец данных. просто используйте dt.days вместо дней
источник
Существует также
datetime.toordinal()
метод, который еще не был упомянут:https://docs.python.org/3/library/datetime.html#datetime.date.toordinal
Кажется, хорошо подходит для расчета разницы в днях, но не так хорошо, как читается
timedelta.days
.источник
(d1 - d0).days
возвращается0
,d1.toordinal() - d0.toordinal()
возвращается1
. Зависит от того, что вам нужно в вашем фактическом использовании.Для расчета даты и времени есть несколько вариантов, но я напишу простой способ:
Надеюсь, поможет
источник
Это предполагает, конечно, что вы уже убедились, что ваши даты в формате
r'\d+/\d+/\d+'
.источник
map(int, s.split('/'))
. Не совсем новаторский, но опять же этот вопрос довольно глупый основной. Мой ответ просто показывает другой способ снять кожу с кошки.Вот три способа решения этой проблемы:
источник