Разница во времени Python
У меня есть два объекта времени.
Пример
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=24, tm_hour=19, tm_min=13, tm_sec=37, tm_wday=4, tm_yday=267, tm_isdst=-1)
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=25, tm_hour=13, tm_min=7, tm_sec=25, tm_wday=5, tm_yday=268, tm_isdst=-1)
Я хочу иметь разницу между этими двумя. Как я мог это сделать?
Мне нужны только минуты и секунды, а также продолжительность этих двух.
Ответы
Ответ 1
Time
экземпляры не поддерживают операцию вычитания. Учитывая, что одним из способов решения этой проблемы было бы преобразовать время в секундах с эпохи, а затем найти разницу, используйте:
>>> t1 = time.localtime()
>>> t1
time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=10, tm_min=12, tm_sec=27, tm_wday=2, tm_yday=286, tm_isdst=0)
>>> t2 = time.gmtime()
>>> t2
time.struct_time(tm_year=2010, tm_mon=10, tm_mday=13, tm_hour=4, tm_min=42, tm_sec=37, tm_wday=2, tm_yday=286, tm_isdst=0)
>>> (time.mktime(t1) - time.mktime(t2)) / 60
329.83333333333331
Ответ 2
>>> t1 = time.mktime(time.strptime("10 Oct 10", "%d %b %y"))
>>> t2 = time.mktime(time.strptime("15 Oct 10", "%d %b %y"))
>>> print(datetime.timedelta(seconds=t2-t1))
5 days, 0:00:00
Ответ 3
Вы можете использовать time.mktime(t)
с объектом struct_time (переданным как "t" ), чтобы преобразовать его в значение с плавающей запятой "секунды с момента". Затем вы можете вычесть их, чтобы получить разницу в секундах, и разделить на 60, чтобы получить разницу в минутах.
Ответ 4
Есть другой способ найти разницу во времени между любыми двумя датами (не лучше, чем предыдущее решение, я думаю):
>>> import datetime
>>> dt1 = datetime.datetime.strptime("10 Oct 10", "%d %b %y")
>>> dt2 = datetime.datetime.strptime("15 Oct 10", "%d %b %y")
>>> (dt2 - dt1).days
5
>>> (dt2 - dt1).seconds
0
>>>
Это даст разницу в днях или секундах или их комбинации. Тип для (dt2 - dt1) равен datetime.timedelta. Подробнее см. library.