Как проверить разницу в секундах между двумя датами?
там должен быть более простой способ сделать это. У меня есть объекты, которые нужно обновлять так часто, поэтому я хочу записывать, когда они были созданы, проверять текущую метку времени и обновлять по мере необходимости.
дата и время.datetime оказался сложным, и я не хочу погружаться в библиотеку ctime. Нет ничего проще для такого рода вещи?
4 ответов:
Если вы хотите, чтобы вычислить разницу между двумя известными датами, используйте
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).seconds0
import time current = time.time() ...job... end = time.time() diff = end - currentэто будет работать для вас?
>>> from datetime import datetime >>> a = datetime.now() # wait a bit >>> b = datetime.now() >>> d = b - a # yields a timedelta object >>> d.seconds 7(7 будет любое количество времени вы ждали немного выше)
Я нахожу дату и время.дата и время, чтобы быть довольно полезным, так что если есть сложный или неудобный сценарий, с которым вы столкнулись, пожалуйста, сообщите нам об этом.
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
у нас есть функция 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)
Comments