Как проверить разницу в секундах между двумя датами?



там должен быть более простой способ сделать это. У меня есть объекты, которые нужно обновлять так часто, поэтому я хочу записывать, когда они были созданы, проверять текущую метку времени и обновлять по мере необходимости.



дата и время.datetime оказался сложным, и я не хочу погружаться в библиотеку ctime. Нет ничего проще для такого рода вещи?

639   4  

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

0

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

    Ничего не найдено.