J'ai une date "10/10/11(m-d-y)"
et je souhaite y ajouter 5 jours à l'aide d'un script Python. S'il vous plaît envisager une solution générale qui fonctionne sur les mois se termine également.
J'utilise le code suivant:
import re
from datetime import datetime
StartDate = "10/10/11"
Date = datetime.strptime(StartDate, "%m/%d/%y")
print Date
-> imprime '2011-10-10 00:00:00'
Maintenant, je veux ajouter 5 jours à cette date. J'ai utilisé le code suivant:
EndDate = Date.today()+timedelta(days=10)
Qui a renvoyé cette erreur:
name 'timedelta' is not defined
Les réponses précédentes sont correctes, mais il est généralement préférable de le faire:
_import datetime
_
Ensuite, vous aurez, en utilisant datetime.timedelta
:
_date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")
end_date = date_1 + datetime.timedelta(days=10)
_
Importez timedelta
en premier.
from datetime import timedelta
Et Date.today()
retournera la date/heure d'aujourd'hui, peut-être que vous voulez
EndDate = Date + timedelta(days=10)
Si vous utilisez déjà des pandas, vous pouvez économiser un peu d’espace en ne spécifiant pas le format:
import pandas as pd
startdate = "10/10/2011"
enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5)
Je suppose que vous manquez quelque chose comme ça:
from datetime import timedelta
Voici une autre méthode pour ajouter des jours à la date en utilisant relativedelta de 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')
Sortie:
Aujourd'hui: 25/06/2015 15:56:09
Après 5 jours: 30/06/2015 15:56:09
Voici une fonction d'obtenir à partir de maintenant + jours spécifiés
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)
Usage:
addDays = 3 #days
output_format = '%d-%m-%Y'
output = get_date(output_format, addDays)
print output
Si vous voulez ajouter des jours à ce jour, vous pouvez utiliser ce code
from datetime import datetime
from datetime import timedelta
date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d')
Pour avoir un code moins commenté, et éviter conflits de noms entre datetime et datetime.datetime , vous devez renommer les classes avec CamelCase noms.
from datetime import datetime as DateTime, timedelta as TimeDelta
Vous pouvez donc faire ce qui suit, ce qui, à mon avis, est plus clair.
date_1 = DateTime.today()
end_date = date_1 + TimeDelta(days=10)
En outre, il y aurait pas de conflit de noms si vous voulez import datetime
plus tard.
En général, vous avez maintenant une réponse, mais peut-être que le cours que j'ai créé sera également utile. Pour moi, cela répond à toutes les exigences de mes projets 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)
Comment l'utiliser
self.tz = pytz.timezone("Europe/Warsaw")
- vous définissez ici le fuseau horaire que vous souhaitez utiliser dans le projetGetDate("2019-08-08").current()
- Ceci convertira votre date de chaîne en objet à horodatage avec le fuseau horaire défini au point 1. Le format de chaîne par défaut est format="%Y-%m-%d"
mais vous pouvez le changer. (p. ex. GetDate("2019-08-08 08:45", format="%Y-%m-%d %H:%M").current()
)GetDate("2019-08-08").get_month_first_day()
renvoie la date donnée (chaîne ou objet) mois premier jourGetDate("2019-08-08").get_month_last_day()
renvoie la date donnée le dernier jourGetDate("2019-08-08").minimum_time()
renvoie la date et le jour de débutGetDate("2019-08-08").maximum_time()
renvoie la date donnée, fin du jourGetDate("2019-08-08").time_delta_days({number_of_days})
renvoie la date donnée + add {nombre de jours} (vous pouvez également appeler: GetDate(timezone.now()).time_delta_days(-1)
pour hier)GetDate("2019-08-08").time_delta_haours({number_of_hours})
similaire au point 7 mais travaillant sur des heuresGetDate("2019-08-08").time_delta_seconds({number_of_seconds})
similaire au point 7 mais travaillant sur les secondesen utilisant timedelta
s, vous pouvez faire:
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