Come creare un DateTime uguale a 15 minuti fa?


Risposte:


232

importa datetime e poi le cose magiche di 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)

1
NB, in Python 3 dovrai passare il fuso orario per now()evitare un errore sulla sottrazione di datetimes offset-naive e offset-aware:datetime.datetime.now(datetime.timezone.utc)
nornagon

1
@nornagon che non è affatto applicabile qui; non importa se l'oggetto datetime è consapevole o ingenuo, la sottrazione di una timedelta funziona a prescindere.
Martijn Pieters

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

11

Questo è semplicemente cosa fare:

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

timedeltas sono specificamente progettati per consentire di sottrarre o aggiungere delta (differenze) a datetimes.


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`

La tua importazione non corrisponde al codice; si importa timedeltama poi si utilizzano gli datetimeattributi. O importa il modulo o aggiungi il tipo.
Martijn Pieters

7

Ho fornito due metodi per farlo per minuti e per anni e ore se vuoi vedere più esempi:

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))

Ottengo i seguenti risultati:

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


4

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

timedeltaè un "cambiamento nel tempo". Richiede giorni come primo parametro e secondi nel secondo parametro. 15 * 60secondi è di 15 minuti.


1

Se stai usando time.time()e vuoi il timestamp come output

Basta usare

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

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

È possibile modificare 900 secondi in base al tempo richiesto.


1

solo il codice seguente in Python 3.7 ha funzionato per me

from datetime import datetime,timedelta    
print(datetime.now()-timedelta(seconds=900))

Questo non è diverso dalle risposte molto più vecchie qui.
Martijn Pieters
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.