Python 时间与秒数的转换

最近在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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值