Як створити DateTime, рівний 15 хвилин тому?


Відповіді:


232

імпортуйте дату часу, а потім чарівні речі таймедели:

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
Зверніть увагу: у Python 3 вам потрібно буде пройти часовий пояс, щоб now()уникнути помилки щодо віднімання datetime.datetime.now(datetime.timezone.utc)
натхненних та зсувних дат часу

1
@nornagon, що тут взагалі не застосовується; не має значення, чи об'єкт дати знає чи наївно, віднімання тиммеделі працює незалежно.
Martijn Pieters


11

Це просто, що робити:

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

timedeltas спеціально розроблені для того, щоб ви могли відняти або додати дельти (відмінності) до 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`

Ваш імпорт не відповідає коду; ви імпортуєте, timedeltaале потім використовуєте datetimeатрибути. Або імпортуйте модуль, або додайте тип.
Martijn Pieters

7

Я запропонував два методи для цього як хвилин, так і років та годин, якщо ви хочете побачити більше прикладів:

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

Я отримую такі результати:

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є "зміною часу". Тривалість днів займає перший параметр, а другий - секунди. 15 * 60секунди - 15 хвилин.


1

Якщо ви використовуєте time.time()та хочете позначку часу як вихід

Просто використовуйте

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

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

Ви можете змінити 900 секунд відповідно до потрібного часу.


1

тільки менший код у Python 3.7 працював на мене

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

Це нічим не відрізняється від набагато старих відповідей тут.
Martijn Pieters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.