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

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

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

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

9 ответов


предыдущие ответы верны, но это, как правило, лучшая практика:

import datetime

тогда у вас будет, используя datetime.timedelta:

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

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

импорт timedelta первый.

from datetime import timedelta

и Date.today() вернет сегодняшнее время, может быть, вы хотите

EndDate = Date + timedelta(days=10)

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

from datetime import timedelta

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

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

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

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


вот функция получения от now + указанных дней

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

для того, чтобы иметь менее многословный код, а не конфликты имен между 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 позже.


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

from datetime import datetime
from datetime import timedelta


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

Это моя начальная, но более полная разработка для общей функции dateadd в python

import datetime
from dateutil.relativedelta import relativedelta

def dateadd(date, part ,value):

    if part=='year':
        result = date + (value * relativedelta(years = 1))
    elif part == 'month':
        result = date + (value * relativedelta(months = 1))
    elif part == 'day':
        result = date + (value * relativedelta(days = 1))
    elif part == 'hour':
        result = date + (value * relativedelta(hours = 1))
    elif part == 'minute':
        result = date + (value * relativedelta(minutes = 1))
    elif part == 'second':
        result = date + (value * relativedelta(seconds = 1))
    return result


date = datetime.datetime.now()
print(date, "now")
print(dateadd(date,'year',2)   ,"year',2", )
print(dateadd(date,'year',-2)  ,"year',-2", )
print(dateadd(date,'month',2)  ,"month',2", )
print(dateadd(date,'month',-2) ,"month',-2", )
print(dateadd(date,'day',2)    ,"day',2", )
print(dateadd(date,'day',-2)   ,"day',-2", )
print(dateadd(date,'hour',2)   ,"hour',2", )
print(dateadd(date,'hour',-2)  ,"hour',-2", )
print(dateadd(date,'minute',2) ,"minute',2", )
print(dateadd(date,'minute',-2),"minute',-2", )
print(dateadd(date,'second',2) ,"second',2", )
print(dateadd(date,'second',-2),"second',-2", )

результат:
2018-03-08 09:04: 12.619699 сейчас
2020-03-08 09: 04: 12.619699 год', 2
2016-03-08 09:04:12.619699 год',-2
2018-05-08 09: 04: 12.619699 месяц, 2
2018-01-08 09: 04: 12.619699 месяц', -2
2018-03-10 09: 04: 12.619699 день',2
2018-03-06 09: 04: 12.619699 день', -2
2018-03-08 11: 04: 12.619699 час', 2
2018-03-08 07: 04: 12.619699 час',-2
2018-03-08 09:06: 12.619699 минута,2
2018-03-08 09: 02: 12.619699 минута, -2
2018-03-08 09: 04: 14.619699 секунда',2
2018-03-08 09: 04: 10.619699 секунда', -2