2016-08-23 5 views
1

У меня есть список создания временных файлов, полученные с помощью os.path.getmtimeЭкспресс время, прошедшее между элементом массива даты в час мин второй помощью питона

time_creation_sorted 
Out[45]: 
array([ 1.47133334e+09, 1.47133437e+09, 1.47133494e+09, 
     1.47133520e+09, 1.47133577e+09, 1.47133615e+09, 
     1.47133617e+09, 1.47133625e+09, 1.47133647e+09]) 

Я знаю, как преобразовать эти элементы в час минут секунд.

datetime.fromtimestamp(time_creation_sorted[1]).strftime('%H:%M:%S') 
Out[62]: '09:59:26' 

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

array(['00:00:00','00:16:36',...]) 

Но Мне не удалось найти, как это сделать. Принимая наивно различие между элементами time_creation_sorted и пытается преобразовать в час: мин: сек не дает что-то логичное:

datetime.fromtimestamp(time_creation_sorted[1]-time_creation_sorted[0]).strftime('%H:%M:%S') 
Out[67]: '01:17:02' 

Любая идея или ссылку на то, как сделать это?

Спасибо, Grégory

ответ

2

Вы должны изменить некоторые части кода, чтобы получить желаемый результат ,

Прежде всего, вы должны преобразовать отметки времени в datetime объекты, отличия которых вызывают так называемые timedelta объектов. __str__() представление этих объектов timedelta именно то, что вы хотите:

from datetime import datetime 

tstamps = [1.47133334e+09, 1.47133437e+09, 1.47133494e+09, 1.47133520e+09, 1.47133577e+09, 1.47133615e+09, 1.47133617e+09, 1.47133625e+09, 1.47133647e+09] 
tstamps = [datetime.fromtimestamp(stamp) for stamp in tstamps] 

tstamps_relative = [(t - tstamps[0]).__str__() for t in tstamps] 
print(tstamps_relative) 

дает:

['0:00:00', '0:17:10', '0:26:40', '0:31:00', '0:40:30', '0:46:50', '0:47:10', '0:48:30', '0:52:10'] 
+0

, который работает отлично. Благодарю. – gregory