Python 输入时间字符串以分钟单位计算时间差

来源:互联网 发布:jdk环境变量 linux 编辑:程序博客网 时间:2024/05/02 01:39

之前转载过一篇使用python dateTime模块处理时间差的文章(原文链接),文章中讲解了如何按照days,hours和seconds单位来计算时间差。这里讲解一下如何使用dateTime模块按照minutes来计算时间差。

dateTime模块本身是没有minutes方式来计算时间差的,只能通过先计算出时间差,在转换成minutes来计算。一开始我是打算使用seconds方式等到时间差,然后再除以60再转换成分钟时间差。但是这种方式存在问题,可以看下下面的效果:

    #时间a减去时间b,获得二者的时间差,参数为时间字符串,例如:2017-03-30 16:54:01.660    def getTimeDiff(self,timeStra,timeStrb):        if timeStra<=timeStrb:            return 0        ta = time.strptime(timeStra, "%Y-%m-%d %H:%M:%S")        tb = time.strptime(timeStrb, "%Y-%m-%d %H:%M:%S")        y,m,d,H,M,S = ta[0:6]        dataTimea=datetime.datetime(y,m,d,H,M,S)        y,m,d,H,M,S = tb[0:6]        dataTimeb=datetime.datetime(y,m,d,H,M,S)        secondsDiff=(dataTimea-dataTimeb).seconds        #两者相加得转换成分钟的时间差        minutesDiff=round(secondsDiff/60,1)        return minutesDiff

输出:60

发现输出结果为60,而不是2940。这是因为使用seconds方式计算时间差时只能算出在一天内的时间差忽略了天数,所以要得到正确的时间差,需要先计算出days的时间差,再算出seconds的时间差,两者相加再转换成minutes才是正确的时间差。

dateTime在计算时间差的时候,如果单位是秒,是无法计算出大于一天的时间差,需要先计算天的时间差,在计算秒的时间差,两者相加才能得出正确的时间差。

secondsDiff=(dataTimea-dataTimeb).secondsdaysDiff=(dataTimea-dataTimeb).days#两者相加得转换成分钟的时间差minutesDiff=daysDiff*1440+round(secondsDiff/60,1)return minutesDiff

输出:2940

当然,最简单的方式是使用total_seconds的方式计算时间差,再转换成minutes的时间差。

secondsDiff=(dataTimea-dataTimeb).total_seconds()

输出:2940

原创粉丝点击