Как создать DateTime, равный 15 минутам назад?


Ответы:


233

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

1
@nornagon, который здесь совсем не применим; не имеет значения, осведомлен ли объект datetime или наивен, вычитание timedelta работает независимо.
Мартейн Питерс


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атрибуты. Либо импортируйте модуль, либо добавьте тип.
Мартейн Питерс

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

Это не отличается от гораздо более старых ответов здесь.
Мартейн Питерс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.