en python 3 est juste: importez datetime puis d = datetime.today () - datetime.timedelta (days = days_to_subtract)
Alex
Il fonctionne également avec d'autres unités, je l'ai utilisé avec timedelta(minutes=12)par exemple.
Nagev
@legalalien: vérifiez que vos instructions d'importation: import datetime as DT; DT.datetime.today()fonctionnent à la fois sur Python 2 et 3. Il est équivalent à DT.datetime.now().
Si votre objet Python datetime est sensible au fuseau horaire, vous devez faire attention à éviter les erreurs autour des transitions DST (ou les changements de décalage UTC pour d'autres raisons):
from datetime import datetime, timedelta
from tzlocal import get_localzone # pip install tzlocal
DAY = timedelta(1)
local_tz = get_localzone()# get local timezone
now = datetime.now(local_tz)# get timezone-aware datetime object
day_ago = local_tz.normalize(now - DAY)# exactly 24 hours ago, time may differ
naive = now.replace(tzinfo=None)- DAY # same time
yesterday = local_tz.localize(naive, is_dst=None)# but elapsed hours may differ
En général, day_agoetyesterday peut différer si le décalage UTC pour le fuseau horaire local a changé au cours du dernier jour.
Par exemple, l'heure d'été / heure d'été se termine le dimanche 2 novembre 2014 à 02h00:00 dans le fuseau horaire America / Los_Angeles donc si:
Juste pour élaborer une méthode alternative et un cas d'utilisation pour lesquels il est utile:
Soustrayez 1 jour de l'heure actuelle:
from datetime import datetime, timedelta
print datetime.now()+ timedelta(days=-1)# Here, I am adding a negative timedelta
Utile dans le cas , si vous souhaitez ajouter 5 jours et soustraire 5 heures de l'heure actuelle. c'est à dire quel est le Datetime 5 jours à partir de maintenant mais 5 heures de moins?
from datetime import datetime, timedelta
print datetime.now()+ timedelta(days=5, hours=-5)
Il peut également être utilisé avec d'autres paramètres, par exemple secondes, semaines, etc.
Aussi juste une autre fonction intéressante que j'aime utiliser lorsque je veux calculer, c'est-à-dire le premier / dernier jour du dernier mois ou d'autres horaires relatifs, etc. ...
La fonction relativedelta de la fonction dateutil (une extension puissante de la lib datetime)
import datetime as dt
from dateutil.relativedelta import relativedelta
#get first and last day of this and last month)
today = dt.date.today()
first_day_this_month = dt.date(day=1, month=today.month, year=today.year)
last_day_last_month = first_day_this_month - relativedelta(days=1)print(first_day_this_month, last_day_last_month)>2015-03-012015-02-28
Réponses:
Vous pouvez utiliser un objet timedelta :
la source
timedelta(minutes=12)
par exemple.import datetime as DT; DT.datetime.today()
fonctionnent à la fois sur Python 2 et 3. Il est équivalent àDT.datetime.now()
.Soustraire
datetime.timedelta(days=1)
la source
Si votre objet Python datetime est sensible au fuseau horaire, vous devez faire attention à éviter les erreurs autour des transitions DST (ou les changements de décalage UTC pour d'autres raisons):
En général,
day_ago
etyesterday
peut différer si le décalage UTC pour le fuseau horaire local a changé au cours du dernier jour.Par exemple, l'heure d'été / heure d'été se termine le dimanche 2 novembre 2014 à 02h00:00 dans le fuseau horaire America / Los_Angeles donc si:
alors
day_ago
etyesterday
diffèrent:day_ago
il y a exactement 24 heures (par rapport ànow
) mais à 11 heures, et non à 10 heures commenow
yesterday
est hier à 10 heures mais il y a 25 heures (par rapport ànow
), pas 24 heures.pendulum
le module le gère automatiquement:la source
Juste pour élaborer une méthode alternative et un cas d'utilisation pour lesquels il est utile:
Il peut également être utilisé avec d'autres paramètres, par exemple secondes, semaines, etc.
la source
Aussi juste une autre fonction intéressante que j'aime utiliser lorsque je veux calculer, c'est-à-dire le premier / dernier jour du dernier mois ou d'autres horaires relatifs, etc. ...
La fonction relativedelta de la fonction dateutil (une extension puissante de la lib datetime)
la source
Le module Genial arrow existe
production:
la source