Python 时间与秒数的转换

来源:互联网 发布:mysql正在载入 编辑:程序博客网 时间:2024/06/11 23:51

最近在Python的工作中用到要把时间转换成秒,或者把秒转换成时间的问题。
把时间转换成秒比较简单:

ftime = float(datetime)

这样ftime就是一个以秒为单位的时间了。

经过运算后,又需要把以秒为单位的时间转换成时分秒的形式,一开始采用的是以下的代码:

total_time = time.strftime("%H:%M:%S", time.localtime( float(1852) ))
正确的输出是:  00:30:52但是实际输出是:08:30:52

经查,因为本地时间(北京时间(GMT +8))比格林威治时间多了8小时,所以转换的时候就在小时上多了8小时, 因此采用以下代码把秒转换成时间:

total_time = time.strftime("%H:%M:%S", time.gmtime( float(1852) ))

此时的输出就是正确的00:30:52.

Notes: 要注意循环的开始条件及结束条件(刚刚一个小程序的开始条件没有处理好,所以在计数的时候总是少了1,就是因为第一个满足条件的record没有被计数, 浪费了半天时间。)

NOTE2


注意,如果从秒转换成时分大于24小时,用上面的方法就不好了。这就需要自己编写一个小程序去处理秒到时分秒的转换了。这里给出一个转换的小程序如下 :

def sec2time(sec):    ''' Convert seconds to '#D days#, HH:MM:SS.FFF' '''    if hasattr(sec,'__len__'):        return [sec2time(s) for s in sec]    m, s = divmod(sec, 60)    h, m = divmod(m, 60)    #d, h = divmod(h, 24)    pattern = r'%02d:%02d:%02d'     return pattern % (h, m, s)

同样也给出一个时分秒到秒的转换小程序:

这里写代def t2s(t): #t format is hh:mm:ss    if t != '0':        h,m,s = t.strip().split(":")        return int(h) * 3600 + int(m) * 60 + int(s)    else:         return 0

http://www.baike.com/wiki/gmtime
http://www.runoob.com/python/att-time-strftime.html

原创粉丝点击