Wie erstelle ich eine DateTime vor 15 Minuten?

Antworten:

232

importiere datetime und dann das magische timedelta Zeug:

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
quelle
1
NB, in Python 3 müssen Sie die Zeitzone übergeben, now()um einen Fehler beim Subtrahieren von Offset-naiven und Offset-fähigen Datenzeiten zu vermeiden:datetime.datetime.now(datetime.timezone.utc)
Nornagon
1
@nornagon, das hier überhaupt nicht anwendbar ist; Es spielt keine Rolle, ob das Datum / Uhrzeit-Objekt bewusst oder naiv ist. Das Subtrahieren eines Zeitdeltas funktioniert unabhängig davon.
Martijn Pieters
35
 datetime.datetime.now() - datetime.timedelta(minutes=15)
nervös
quelle
11

Dies ist einfach zu tun:

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

timedeltas wurden speziell entwickelt, um Ihnen das Subtrahieren oder Hinzufügen von Deltas (Unterschieden) zu datetimes zu ermöglichen.


quelle
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
quelle
Ihr Import stimmt nicht mit dem Code überein. Sie importieren timedelta, verwenden dann aber datetimeAttribute. Importieren Sie entweder das Modul oder fügen Sie den Typ hinzu.
Martijn Pieters
7

Ich habe zwei Methoden für Minuten sowie für Jahre und Stunden bereitgestellt, wenn Sie weitere Beispiele sehen möchten:

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

Ich erhalte folgende Ergebnisse:

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
quelle
4

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

timedeltaist eine "Zeitumstellung". Es dauert Tage als ersten Parameter und Sekunden im zweiten Parameter. 15 * 60Sekunden sind 15 Minuten.

Donald Miner
quelle
1

Wenn Sie time.time()einen Zeitstempel als Ausgabe verwenden und möchten

Einfach benutzen

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

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

Sie können 900 Sekunden je nach gewünschter Zeit ändern.

vivek dhamecha
quelle
1

Nur der folgende Code in Python 3.7 hat für mich funktioniert

from datetime import datetime,timedelta    
print(datetime.now()-timedelta(seconds=900))
Anandkumar
quelle
Dies unterscheidet sich nicht von viel älteren Antworten hier.
Martijn Pieters