2014-02-17 5 views
1

Я хотел бы преобразовать список десятичного времени (HH, HHH) в формате времени HH: MM: SSPython: Decimal в формат времени

16.  , 16.00000381, 16.00000572, 16.00000954, 
16.00001144, 16.00001335, 16.00001717, 16.00001907, 
16.00002098, 16.0000248 , 16.00002861, 16.00003052, 
16.00003433, 16.00003624, 16.00003815, 16.00004196, 
16.00004387, 16.00004768, 16.00004959, 16.00005341 

Есть ли способ сделать это в Python?

Благодаря

+0

в приведенных выше данных 16.0001144, что 16 представляет и что. 00001144 представляет? – Nilesh

+0

16.00000381 - это часы с десятичными знаками, я могу преобразовать их в секунды, умножая их на 3600 на каждый элемент, но это сложно сделать, чтобы создать согласование с форматом времени. HH: MM: SS: ms (ms = миллисекунды) – nandhos

+0

например, 16.00001144 16: 00: 00: 41.18 – nandhos

ответ

5

Предполагая значения представляют собой часы:

In [86]: import datetime as DT 
In [87]: data = [16.  , 16.00000381, 16.00000572, 16.00000954, 
16.00001144, 16.00001335, 16.00001717, 16.00001907, 
16.00002098, 16.0000248 , 16.00002861, 16.00003052, 
16.00003433, 16.00003624, 16.00003815, 16.00004196, 
16.00004387, 16.00004768, 16.00004959, 16.00005341] 
    ....: ....: ....: ....: 
In [88]: map(str, [DT.timedelta(seconds=x*60*60.0) for x in data]) 
Out[88]: 
['16:00:00', 
'16:00:00.013716', 
'16:00:00.020592', 
'16:00:00.034344',... 
'16:00:00.157932', 
'16:00:00.171648', 
'16:00:00.178524', 
'16:00:00.192276'] 
+0

Извините, я был немного неясен, это правильно UNUTBU, значения часов и я хочу преобразовать их в HH: MM: SS: ms (ms = miliseconds) – nandhos

+0

@nandhos: 'timedelta() 'имеет атрибут' .microseconds'. Связано: [Формат Python timedelta в строку] (http://stackoverflow.com/q/538666/4279) – jfs

0

Для одного времени:

import datetime 
x = 21.234768653 
hour = int(x) 
minute = int((x - int(x))*60.0) 
second = int(((x - int(x))*60 - int((x - int(x))*60.0))*60.0) 
(datetime.time(hour, minute, second)).strftime('%H:%M:%S') 

Список времен:

times = [(datetime.time(int(x), int((x - int(x))*60.0), int(((x - int(x)) * 60 - int((x - int(x))*60.0))*60.0))).strftime('%H:%M:%S') for x in time_list] 
Смежные вопросы