Comment créer un DateTime égal à 15 minutes auparavant?

Réponses:

232

importez datetime et ensuite les trucs magiques 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)
Spacedman
la source
1
NB, dans Python 3, vous devrez passer le fuseau horaire à now()pour éviter une erreur de soustraction des datetimes naïfs et sensibles au décalage:datetime.datetime.now(datetime.timezone.utc)
nornagon
1
@nornagon qui n'est pas du tout applicable ici; peu importe si l'objet datetime est conscient ou naïf, la soustraction d'un timedelta fonctionne malgré tout.
Martijn Pieters
35
 datetime.datetime.now() - datetime.timedelta(minutes=15)
Eduffy
la source
11

Voici simplement ce qu'il faut faire:

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

timedeltas sont spécifiquement conçus pour vous permettre de soustraire ou d'ajouter des deltas (différences) aux datetimes.


la source
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
la source
Votre importation ne correspond pas au code; vous importez timedeltamais utilisez ensuite des datetimeattributs. Importez le module ou ajoutez le type.
Martijn Pieters
7

J'ai fourni deux méthodes pour le faire pendant des minutes ainsi que pendant des années et des heures si vous voulez voir plus d'exemples:

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

J'obtiens les résultats suivants:

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
la source
4

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

timedeltaest un «changement dans le temps». Cela prend des jours comme premier paramètre et des secondes pour le deuxième paramètre. 15 * 60secondes est de 15 minutes.

Donald Miner
la source
1

Si vous utilisez time.time()et voulez un horodatage comme sortie

Utilisez simplement

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

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

Vous pouvez changer 900 secondes selon votre temps requis.

vivek dhamecha
la source
1

seul le code ci-dessous en Python 3.7 a fonctionné pour moi

from datetime import datetime,timedelta    
print(datetime.now()-timedelta(seconds=900))
Anandkumar
la source
Ce n'est pas différent des réponses beaucoup plus anciennes ici.
Martijn Pieters