Como criar um DateTime igual a 15 minutos atrás?

Respostas:

232

import datetime e depois as coisas mágicas do timedelta:

In [63]: datetime.datetime.now()
Out[63]: datetime.datetime(2010, 12, 27, 14, 39, 19, 700401)

In [64]: datetime.datetime.now() - datetime.timedelta(minutes=15)
Out[64]: datetime.datetime(2010, 12, 27, 14, 24, 21, 684435)
Astronauta
fonte
1
NB, em Python 3, você precisará passar o fuso horário para now()evitar um erro sobre a subtração de datetimes ingênuo e ciente de deslocamento:datetime.datetime.now(datetime.timezone.utc)
nornagon
1
@nornagon que não é aplicável aqui; não importa se o objeto datetime está ciente ou ingênuo, subtrair um timedelta funciona independentemente.
Martijn Pieters
35
 datetime.datetime.now() - datetime.timedelta(minutes=15)
eduffy
fonte
11

Isso é simplesmente o que fazer:

datetime.datetime.now() - datetime.timedelta(minutes = 15)

timedeltas são projetados especificamente para permitir que você subtraia ou adicione deltas (diferenças) a datetimes.


fonte
7
from datetime import timedelta    
datetime.datetime.now() - datetime.timedelta(0, 900)

Actually 900 is in seconds. Which is equal to 15 minutes. `15*60 = 900`
Tauquir
fonte
Sua importação não corresponde ao código; você importa, timedeltamas depois usa datetimeatributos. Importe o módulo ou adicione o tipo.
Martijn Pieters
7

Eu forneci dois métodos para fazer isso por minutos, bem como por anos e horas, se você quiser ver mais exemplos:

import datetime
print(datetime.datetime.now())
print(datetime.datetime.now() - datetime.timedelta(minutes = 15))
print(datetime.datetime.now() + datetime.timedelta(minutes = -15))
print(datetime.timedelta(hours = 5))
print(datetime.datetime.now() + datetime.timedelta(days = 3))
print(datetime.datetime.now() + datetime.timedelta(days = -9))
print(datetime.datetime.now() - datetime.timedelta(days = 9))

Eu obtenho os seguintes resultados:

2016-06-03 16:04:03.706615
2016-06-03 15:49:03.706622
2016-06-03 15:49:03.706642
5:00:00
2016-06-06 16:04:03.706665
2016-05-25 16:04:03.706676
2016-05-25 16:04:03.706687
2016-06-03
16:04:03.706716
Mona Jalal
fonte
4

datetime.datetime.now() - datetime.timedelta(0, 15 * 60)

timedeltaé uma "mudança no tempo". Leva dias como o primeiro parâmetro e segundos no segundo parâmetro. 15 * 60segundos são 15 minutos.

Donald Miner
fonte
1

Se você estiver usando time.time()e quiser um carimbo de data / hora como saída

Basta usar

CONSTANT_SECONDS = 900 # time  in seconds (900 seconds = 15 min)

current_time = int(time.time())
time_before_15_min = current_time - CONSTANT_SECONDS

Você pode alterar 900 segundos de acordo com o tempo necessário.

vivek dhamecha
fonte
1

apenas o código abaixo em Python 3.7 funcionou para mim

from datetime import datetime,timedelta    
print(datetime.now()-timedelta(seconds=900))
Anandkumar
fonte
Isso não é diferente de respostas muito mais antigas aqui.
Martijn Pieters