我有一个程序可以进行一些解析并以微秒格式收集时间。但是,在读取这些数据时,看到10000000000微秒并不是很漂亮。像x秒或x分钟这样的东西看起来更好。
所以..我建立了这个:
def convert_micro_input(micro_time):
t = int(micro_time)
if t<1000: #millisecond
return str(t) +' us'
elif t<1000000: #second
return str(int(t/1000)) + ' ms'
elif t<60000000: #is a second
return str(int(t/1000000)) + ' second(s)'
elif t<3600000000:
return str(int(t/60000000)) + ' minute(s)'
elif t<86400000000:
return str(int(t/3600000000)) + ' hour(s)'
elif t<604800000000:
return str(int(t/86400000000)) + ' day(s)'
else:
print 'Exceeded Time Conversion Possibilities'
return None
现在,在我看来,这看起来很好,但是,我的老板并不满意。他说,如果有人在一年内编辑这个数据,那么这些数字在可读性方面会让人感到困惑,他说会在一段时间内实现这一点。
所以,说到这一点。在这些约束下,我想知道如何将这个相同的逻辑实现为更可读(可能使用python等效的宏)形式,并将它放在while循环中。
谢谢大家。
答案 0 :(得分:1)
python将此工具内置于其中
from datetime import timedelta
for t in all_times_in_us:
print timedelta(seconds=t/1000000.0)
利用这是我认为最简单(也是最可读)的方式。如果你真的想要你可以通过在顶部(或在time_util.py文件或其他东西中)定义一些常量来使它更具可读性
MICROSECOND=1
MILLISECOND=MICROSECOND*1000
SECOND=MS*1000
MINUTE=SECOND*60
HOUR=MINUTE*60
DAY=HOUR*24
WEEK=DAY*7
并使用这些值,这样就可以非常清楚它们是什么
例如
if t < MILLISECOND:
return "{time} us".format(time=t)
elif t < SECOND:
return "{time} ms".format(time=t//MILLISECOND)
elif t < MINUTE:
return "{time} seconds".format(time=t//SECOND)
...
答案 1 :(得分:0)
将datetime
模块与timedelta
对象一起使用。
>>> import datetime
>>> us = 96000000
>>> mytime = datetime.timedelta(microseconds=us)
>>> mytime.seconds
96