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

之前转载过一篇使用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).seconds
daysDiff=(dataTimea-dataTimeb).days
#两者相加得转换成分钟的时间差
minutesDiff=daysDiff*1440+round(secondsDiff/60,1)
return minutesDiff

输出:2940

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

secondsDiff=(dataTimea-dataTimeb).total_seconds()

输出:2940

你可能感兴趣的:(小技巧)