Как проверить разницу в секундах между двумя датами?
Должен быть более простой способ сделать это. У меня есть объекты, которые нужно обновлять каждый раз так часто, поэтому я хочу записывать, когда они были созданы, проверять текущую временную метку и обновлять по мере необходимости.
datetime.datetime оказалось сложным, и я не хочу погружаться в библиотеку ctime. Есть ли что-то проще для такого рода вещей?
Ответы
Ответ 1
если вы хотите вычислить различия между двумя известными датами, используйте total_seconds
следующим образом:
import datetime as dt
a = dt.datetime(2013,12,30,23,59,59)
b = dt.datetime(2013,12,31,23,59,59)
(b-a).total_seconds()
86400,0
#note that seconds doesn't give you what you want:
(b-a).seconds
0
Ответ 2
import time
current = time.time()
...job...
end = time.time()
diff = end - current
будет работать для вас?
Ответ 3
>>> from datetime import datetime
>>> a = datetime.now()
# wait a bit
>>> b = datetime.now()
>>> d = b - a # yields a timedelta object
>>> d.seconds
7
(7 будет любое количество времени, которое вы ожидали чуть выше)
Я нахожу datetime.datetime достаточно полезным, поэтому, если у вас возник сложный или неудобный сценарий, сообщите нам.
EDIT: благодаря @WoLpH, указав, что не всегда обязательно нужно так часто обновляться, что время жизни будет близко друг к другу. При учете дней в дельте вы можете обрабатывать более длинные временные расхождения:
>>> a = datetime(2010, 12, 5)
>>> b = datetime(2010, 12, 7)
>>> d = b - a
>>> d.seconds
0
>>> d.days
2
>>> d.seconds + d.days * 86400
172800
Ответ 4
У нас есть функция total_seconds() с Python 2.7
Пожалуйста, смотрите ниже код для python 2.6
import datetime
import time
def diffdates(d1, d2):
#Date format: %Y-%m-%d %H:%M:%S
return (time.mktime(time.strptime(d2,"%Y-%m-%d %H:%M:%S")) -
time.mktime(time.strptime(d1, "%Y-%m-%d %H:%M:%S")))
d1 = datetime.now()
d2 = datetime.now() + timedelta(days=1)
diff = diffdates(d1, d2)
Ответ 5
Вот тот, который работает для меня.
from datetime import datetime
date_format = "%H:%M:%S"
# You could also pass datetime.time object in this part and convert it to string.
time_start = str('09:00:00')
time_end = str('18:00:00')
# Then get the difference here.
diff = datetime.strptime(time_end, date_format) - datetime.strptime(time_start, date_format)
# Get the time in hours i.e. 9.60, 8.5
result = diff.seconds / 3600;
Надеюсь это поможет!
Ответ 6
>>> import datetime
>>> d1 = datetime.datetime.now()
>>> d2 = datetime.datetime.now()
>>> d=d2 - d1
>>> d.seconds