У меня две разные даты, и я хочу знать разницу в днях между ними. Формат даты - ГГГГ-ММ-ДД.
У меня есть функция, которая может ДОБАВИТЬ или ВЫЧИТАТЬ заданное число к дате:
def addonDays(a, x):
ret = time.strftime("%Y-%m-%d",time.localtime(time.mktime(time.strptime(a,"%Y-%m-%d"))+x*3600*24+3600))
return ret
где A - это дата, а x - количество дней, которые я хочу добавить. И результат - другое свидание.
Мне нужна функция, в которой я могу указать две даты, и результатом будет int с разницей в датах в днях.
Ответы:
Используйте,
-
чтобы увидеть разницу между двумяdatetime
объектами и взятьdays
член.источник
(d2 - d1)
будетtimedelta
объект.total_seconds
тоже упомянуть ? Я думаю, что это важно, поскольку это то, что я ожидал получить, когда попробовал,seconds
не читая документации.Еще одно короткое решение:
источник
if
indiff_dates
совершенно не нужна? По определению абсолютного значенияabs(date1-date2)
всегда будет равноabs(date2-date1)
.Я пробовал код, опубликованный larsmans выше, но есть несколько проблем:
1) Код в том виде, в каком он есть, выдает ошибку, как упомянул Маугерра 2) Если вы измените код на следующий:
Это преобразует ваши объекты datetime в строки, но две вещи
1) Попытка сделать d2 - d1 потерпит неудачу, поскольку вы не можете использовать оператор минус для строк и 2) Если вы прочитали первую строку приведенного выше ответа, вы хотите использовать оператор - для двух объектов datetime, но вы просто преобразовал их в строки
Я обнаружил, что вам буквально нужно только следующее:
источник
datetime.strptime
для преобразования строк вdatetime
объекты. Поскольку в OP указано, что «Формат даты - ГГГГ-ММ-ДД», я предположил, что даты представлены в виде строк. В противном случае, очевидно, нет необходимости в преобразовании.Попробуй это:
источник
pd.date_range ('2019-01-01', '2019-02-01'). shape [0]
источник