【问题标题】:Python: Decimal into time formatPython:将十进制转换为时间格式
【发布时间】:2014-03-16 15:54:04
【问题描述】:

我想将十进制时间列表 (HH,HHH) 转换为时间格式 HH:MM:SS

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 中做到这一点?

谢谢

【问题讨论】:

  • 上述数据16.0001144中,16代表什么,.00001144代表什么?
  • 16.00000381 是带小数的小时数,我可以将秒数乘以 3600 转换为每个元素,但要使用时间格式 HH:MM:SS:ms (ms =毫秒)
  • 例如 16.00001144 是 16:00:00:41.18

标签: python datetime decimal time-format


【解决方案1】:

假设值代表小时:

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']

【讨论】:

  • 对不起,我有点不清楚,这是正确的 UNUTBU,值是小时,我想将它们转换为 HH:MM:SS:ms (ms=miliseconds)
  • @nandhos:timedelta() 具有.microseconds 属性。相关:Python format timedelta to string
【解决方案2】:

单次:

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]

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多