Добавление 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)
Если вы уже используете 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