Jak utworzyć DateTime równy 15 minut temu?


Odpowiedzi:


232

zaimportuj datetime, a następnie magiczne 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
Uwaga: w Pythonie 3 musisz przejść strefę czasową, aby now()uniknąć błędu związanego z odejmowaniem czasów danych naiwnych i uwzględniających offset:datetime.datetime.now(datetime.timezone.utc)
nornagon

1
@nornagon, które w ogóle nie ma tutaj zastosowania; nie ma znaczenia, czy obiekt daty i godziny jest świadomy czy naiwny, odejmowanie timedelta działa niezależnie.
Martijn Pieters


11

Oto co należy zrobić:

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

timedeltas są specjalnie zaprojektowane, aby umożliwić odejmowanie lub dodawanie delt (różnic) do 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`

Twój import nie pasuje do kodu; importujesz, timedeltaale potem używasz datetimeatrybutów. Zaimportuj moduł lub dodaj typ.
Martijn Pieters

7

Podałem dwie metody robienia tego przez minuty, a także lata i godziny, jeśli chcesz zobaczyć więcej przykładów:

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

Otrzymuję następujące wyniki:

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)

timedeltato „zmiana w czasie”. Potrzeba dni jako pierwszego parametru i sekund w drugim parametrze. 15 * 60sekund to 15 minut.


1

Jeśli używasz time.time()i chcesz mieć znacznik czasu jako dane wyjściowe

Po prostu użyj

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

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

Możesz zmienić 900 sekund zgodnie z wymaganym czasem.


1

tylko poniższy kod w Pythonie 3.7 działał dla mnie

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

Nie różni się to od dużo starszych odpowiedzi tutaj.
Martijn Pieters
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.