Добавление 5 дней к дате в Python

У меня есть дата "10/10/11(m-d-y)", и я хочу добавить к ней 5 дней с помощью Python script. Пожалуйста, рассмотрите общее решение, которое работает в конце месяца.

Я использую следующий код:

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")

print Date → печатает '2011-10-10 00:00:00'

Теперь я хочу добавить 5 дней к этой дате. Я использовал следующий код:

EndDate = Date.today()+timedelta(days=10)

Которая вернула эту ошибку:

name 'timedelta' is not defined

Ответ 1

Предыдущие ответы верны, но лучше всего сделать это:

import datetime

Затем вы получите, используя datetime.timedelta:

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")

end_date = date_1 + datetime.timedelta(days=10)

Ответ 2

Сначала импортируйте timedelta.

from datetime import timedelta

И Date.today() вернет сегодня datetime, возможно, вы хотите

EndDate = Date + timedelta(days=10)

Ответ 3

Если вы уже используете pandas, вы можете сохранить небольшое пространство, не указав формат:

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)

Ответ 4

Я думаю, вам не хватает чего-то подобного:

from datetime import timedelta

Ответ 5

Вот еще один способ добавления дней на дату, используя dateutil relativedelta​​strong > .

from datetime import datetime
from dateutil.relativedelta import relativedelta

print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S') 
date_after_month = datetime.now()+ relativedelta(days=5)
print 'After 5 Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S')

Вывод:

Сегодня: 25/06/2015 15:56:09

Через 5 дней: 30/06/2015 15:56:09

Ответ 6

Вот функция получения от + + дней

import datetime

def get_date(dateFormat="%d-%m-%Y", addDays=0):

    timeNow = datetime.datetime.now()
    if (addDays!=0):
        anotherTime = timeNow + datetime.timedelta(days=addDays)
    else:
        anotherTime = timeNow

    return anotherTime.strftime(dateFormat)

Использование:

addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output

Ответ 7

Если вы хотите добавить дни до даты сейчас, вы можете использовать этот код

from datetime import datetime
from datetime import timedelta


date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')

Ответ 8

Чтобы иметь менее подробный код и избежать конфликтов имен между datetime и datetime.datetime, вы должны переименовать классы с именами CamelCase.

from datetime import datetime as DateTime, timedelta as TimeDelta

Таким образом, вы можете сделать следующее, что я думаю, это понятнее.

date_1 = DateTime.today() 
end_date = date_1 + TimeDelta(days=10)

Кроме того, не будет конфликта имен, если вы захотите import datetime позже.

Ответ 9

используя timedelta, вы можете сделать:

import datetime
today=datetime.date.today()


time=datetime.time()
print("today :",today)

# One day different .
five_day=datetime.timedelta(days=5)
print("one day :",five_day)
#output - 1 day , 00:00:00


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)


# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)
#output - 
today : 2019-05-29
one day : 5 days, 0:00:00
fitfthday 2019-06-03

Ответ 10

Обычно вы уже получили ответ, но, возможно, мой класс, который я создал, также будет полезен. Для меня это решает все мои требования, которые я когда-либо имел в моих проектах Pyhon.

class GetDate:
    def __init__(self, date, format="%Y-%m-%d"):
        self.tz = pytz.timezone("Europe/Warsaw")

        if isinstance(date, str):
            date = datetime.strptime(date, format)

        self.date = date.astimezone(self.tz)

    def time_delta_days(self, days):
        return self.date + timedelta(days=days)

    def time_delta_hours(self, hours):
        return self.date + timedelta(hours=hours)

    def time_delta_seconds(self, seconds):
        return self.date + timedelta(seconds=seconds)

    def get_minimum_time(self):
        return datetime.combine(self.date, time.min).astimezone(self.tz)

    def get_maximum_time(self):
        return datetime.combine(self.date, time.max).astimezone(self.tz)

    def get_month_first_day(self):
        return datetime(self.date.year, self.date.month, 1).astimezone(self.tz)

    def current(self):
        return self.date

    def get_month_last_day(self):
        lastDay = calendar.monthrange(self.date.year, self.date.month)[1]
        date = datetime(self.date.year, self.date.month, lastDay)
        return datetime.combine(date, time.max).astimezone(self.tz)

Как его использовать

  1. self.tz = pytz.timezone("Europe/Warsaw") - здесь вы определяете часовой пояс, который хотите использовать в проекте
  2. GetDate("2019-08-08").current() - это преобразует вашу строковую дату в объект с указанием времени в часовом поясе, который вы определили в пункте 1. Формат строки по умолчанию - format="%Y-%m-%d", но вы можете сменить его. (например, GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current())
  3. GetDate("2019-08-08").get_month_first_day() возвращает заданную дату (строку или объект) месяц первый день
  4. GetDate("2019-08-08").get_month_last_day() возвращает заданную дату месяц в последний день
  5. GetDate("2019-08-08").minimum_time() возвращает заданную дату начала дня
  6. GetDate("2019-08-08").maximum_time() возвращает указанную дату в конце дня
  7. GetDate("2019-08-08").time_delta_days({number_of_days}) возвращает заданную дату + добавление {количество дней} (вы также можете позвонить: GetDate(timezone.now()).time_delta_days(-1) за вчерашний день)
  8. GetDate("2019-08-08").time_delta_haours({number_of_hours}) похож на пункт 7, но работает в часы
  9. GetDate("2019-08-08").time_delta_seconds({number_of_seconds}) похож на пункт 7, но работает на секунды