如何在python中获得以这种格式表示的时间以分钟为单位的时差?

时间:2014-07-01 10:24:02

标签: python python-2.7 datetime time python-datetime

我正在使用Python 2.7。我想用以下变量找出时间差(以分钟为单位);

import datetime  
#Time Format (YYYY-MM-DD HH-MM-SS)
TimeStart = '2014-06-30 13:23:46'
TimeEnd = datetime.datetime.now()

我想编写一个函数,使用浮动数据类型以分钟为单位返回时间差。如果时差为90secs,则函数返回1.5。这是我写的功能,但不幸的是,它远没有起作用。

def getTimeDifferenceFromNow(TimeStart, TimeEnd):
    timeDiff = TimeEnd - TimeStart
    return divmod(timeDiff.days * 86400 + timeDiff.seconds, 60)  

如何在Python 2.7中完成?忘记我写的函数,如果它离正确的答案太远了。

1 个答案:

答案 0 :(得分:7)

在执行此操作之前,您需要解析输入字符串:

TimeStart = datetime.datetime.strptime(TimeStart, '%Y-%m-%d %H:%M:%S')

调用getTimeDifferenceFromNow()之前执行此操作。

一旦减去了两个datetime个对象,生成的timedelta就会有一个方便的方法timedelta.total_seconds();将它除以60得到几分钟的增量:

def getTimeDifferenceFromNow(TimeStart, TimeEnd):
    timeDiff = TimeEnd - TimeStart
    return timeDiff.total_seconds() / 60

演示:

>>> import datetime
>>> TimeStart = datetime.datetime(2014, 6, 30, 13, 23, 46)
>>> TimeEnd = datetime.datetime.now()
>>> TimeEnd
datetime.datetime(2014, 7, 1, 11, 31, 59, 134990)
>>> def getTimeDifferenceFromNow(TimeStart, TimeEnd):
...     timeDiff = TimeEnd - TimeStart
...     return timeDiff.total_seconds() / 60
... 
>>> getTimeDifferenceFromNow(TimeStart, TimeEnd)
1328.2189165000002