Добавление 5 дней к дате в Python - PullRequest
294 голосов
/ 29 июля 2011

У меня есть дата "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 ]

452 голосов
/ 29 июля 2011

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

import datetime

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

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

end_date = date_1 + datetime.timedelta(days=10)
98 голосов
/ 29 июля 2011

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

from datetime import timedelta

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

EndDate = Date + timedelta(days=10)
15 голосов
/ 29 августа 2014

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

import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)
12 голосов
/ 29 июля 2011

Полагаю, вам не хватает чего-то такого:

from datetime import timedelta
11 голосов
/ 25 июня 2015

Вот еще один метод добавления дней в дату с использованием относительная дельта dateutil .

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

8 голосов
/ 20 февраля 2018

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

from datetime import datetime
from datetime import timedelta


date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')
8 голосов
/ 14 ноября 2014

Вот функция получения с настоящего момента + указанные дни

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
5 голосов
/ 27 сентября 2017

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

from datetime import datetime as DateTime, timedelta as TimeDelta

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

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

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

0 голосов
/ 29 мая 2019

с помощью timedelta s вы можете сделать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...