em python 3 é simplesmente: importação de data e hora e, em seguida, d = datetime.today () - datetime.timedelta (dia = days_to_subtract)
Alex
Também funciona com outras unidades, usei timedelta(minutes=12)por exemplo.
Nagev
@ legalalien: verifique se suas declarações de importação: import datetime as DT; DT.datetime.today()funcionam tanto em Python 2 quanto em 3. É equivalente a DT.datetime.now().
Se o objeto de data e hora do Python reconhece o fuso horário, tome cuidado para evitar erros nas transições de horário de verão (ou alterações no deslocamento do UTC por outros motivos):
from datetime import datetime, timedeltafrom 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
Em geral, day_agoe yesterdaypode ser diferente se o deslocamento do UTC para o fuso horário local for alterado no último dia.
Por exemplo, o horário de verão / verão termina no domingo, 2 de novembro de 2014 às 02:00:00 no fuso horário America / Los_Angeles, portanto, se:
Apenas para elaborar um método alternativo e um caso de uso para o qual é útil:
Subtrair 1 dia da data e hora atuais:
from datetime import datetime, timedeltaprint datetime.now()+ timedelta(days=-1)# Here, I am adding a negative timedelta
Útil no caso , se você deseja adicionar 5 dias e subtrair 5 horas da data e hora atuais. ie Qual é o tempo de data em 5 dias a partir de agora, mas 5 horas a menos?
from datetime import datetime, timedeltaprint datetime.now()+ timedelta(days=5, hours=-5)
Da mesma forma, pode ser usado com outros parâmetros, por exemplo, segundos, semanas, etc.
Também é apenas mais uma função interessante que eu gosto de usar quando quero calcular, isto é, o primeiro / último dia do mês passado ou outras datas relativas etc.
A função relativedelta da função dateutil (uma extensão poderosa para a lib datetime)
import datetime as dtfrom 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
Respostas:
Você pode usar um objeto timedelta :
fonte
timedelta(minutes=12)
por exemplo.import datetime as DT; DT.datetime.today()
funcionam tanto em Python 2 quanto em 3. É equivalente aDT.datetime.now()
.Subtrair
datetime.timedelta(days=1)
fonte
Se o objeto de data e hora do Python reconhece o fuso horário, tome cuidado para evitar erros nas transições de horário de verão (ou alterações no deslocamento do UTC por outros motivos):
Em geral,
day_ago
eyesterday
pode ser diferente se o deslocamento do UTC para o fuso horário local for alterado no último dia.Por exemplo, o horário de verão / verão termina no domingo, 2 de novembro de 2014 às 02:00:00 no fuso horário America / Los_Angeles, portanto, se:
então
day_ago
eyesterday
diferem:day_ago
é exatamente 24 horas atrás (em relação anow
), mas às 11 horas, não às 10 horas comonow
yesterday
é ontem às 10 horas, mas há 25 horas (em relação anow
) e não 24 horas.pendulum
O módulo lida com ele automaticamente:fonte
Apenas para elaborar um método alternativo e um caso de uso para o qual é útil:
Da mesma forma, pode ser usado com outros parâmetros, por exemplo, segundos, semanas, etc.
fonte
Também é apenas mais uma função interessante que eu gosto de usar quando quero calcular, isto é, o primeiro / último dia do mês passado ou outras datas relativas etc.
A função relativedelta da função dateutil (uma extensão poderosa para a lib datetime)
fonte
Existe um módulo de seta genial
resultado:
fonte