在Python中高效地转换时间

2024-04-18 02:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个程序,做一些分析,并采取在微秒格式的时间。然而,当读取这些数据时,看到1000000000微秒并不是很漂亮。像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循环中。你知道吗

谢谢大家。你知道吗


Tags: 数据程序convertinputreturntimedef格式
2条回答

python本身就内置了这个功能

from datetime import timedelta
for t in all_times_in_us:
    print timedelta(seconds=t/1000000.0)

利用这一点是我认为最简单(也是最易读)的方法。也就是说,如果您真的想这样做,您可以通过在顶部(或在一段时间内)定义一些常量来提高可读性_利用率文件之类的)

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)
...

^{}模块与timedelta对象一起使用。你知道吗

>>> import datetime
>>> us = 96000000
>>> mytime = datetime.timedelta(microseconds=us)
>>> mytime.seconds
96

相关问题 更多 >