2013-09-17 5 views
4

У меня есть два раза в следующем формате. Я хочу найти разницу во времени в миллисекундах. Это дает только секундную точность. Как сделать эту работу миллисекундами? Спасибо. Новое для python.Разница между двумя заданными временами в миллисекундах в python

import time 
t1 = "2013-09-13 15:43:35,893" 
t2 = "2013-09-13 15:43:45,147" 
TIME_FORMAT2 = "%Y-%m-%d %H:%M:%S,%f" 
t11 = time.mktime(time.strptime(t1, TIME_FORMAT2)) 
t12 = time.mktime(time.strptime(t2, TIME_FORMAT2)) 
print t11-t12 
+0

Как это может работать? В 'struct_time' нет дробного поля секунд. –

+0

. Вам нужен модуль' datetime', а не 'time'. –

ответ

6
>>> from datetime import datetime 
>>> datetime.strptime(t1, TIME_FORMAT2) - datetime.strptime(t2, TIME_FORMAT2) 
datetime.timedelta(-1, 86390, 746000) 
>>> _.total_seconds() 
-9.254 
0

Если вы хотите миллисекунды и даты в одном объекте, используйте datetime объект. К сожалению, в дате/времени нет парсера в формате, который вы даете. Вы можете использовать простое регулярное выражение:

import time, datetime, re 

dt_pat = re.compile(r"(\d+)\-(\d+)-(\d+)\s+(\d+):(\d+):(\d+),(\d+)") 
def mstime(tstr): 
    m = dt_pat.match(tstr) 
    if m==None: return m 
    v = [int(s) for s in m.groups()] 
    return datetime.datetime(*v) 


t1 = "2013-09-13 15:43:35,893" 
t2 = "2013-09-13 15:43:45,147" 
dt1 = mstime(t1) 
dt2 = mstime(t2) 
diff = dt2-dt1 
print diff.total_seconds() 
+0

Есть один, ответ OP и gnibbler используют его. :) – flornquake

Смежные вопросы