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)

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)

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.


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`

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


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.


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.


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

Ce n'est pas différent des réponses beaucoup plus anciennes ici.
Martijn Pieters
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.