将日期转换为小时
我想找出两个日期之间的时间差,然后把这个时间差换算成小时。大概是这样的:
开始时间 = 2011-03-10 15:45:48
结束时间 = 2011-03-10 18:04:00
然后我想计算时间差,像这样:
时间差 = abs(开始时间 - 结束时间)
接着我需要比较这个结果:
如果时间差 > 6小时
...
但是当我用这种方法时,得到的结果是时间格式的,我该怎么把时间格式转换成小时呢?
谢谢!
1 个回答
13
假设你有两个日期和时间,它们是 datetime
对象(可以参考 datetime.datetime):
>>> import datetime
>>> start_time = datetime.datetime(2011,3,10,15,45,48)
>>> end_time = datetime.datetime(2011,3,10,18,4,0)
把一个 datetime
减去另一个,会得到一个 timedelta
对象。你可以用 abs
来确保时间差是正数:
>>> start_time - end_time
datetime.timedelta(-1, 78108)
>>> abs(start_time - end_time)
datetime.timedelta(0, 8292)
现在,要把 timedelta
中的秒数转换成小时,只需用 3600 除一下:
>>> hours_difference = abs(start_time - end_time).total_seconds() / 3600.0
>>> hours_difference
2.3033333333333332
需要注意的是,total_seconds()
方法是在 Python 2.7 中引入的,如果你用的是更早的版本,就得自己从 .days
和 .seconds
计算,具体可以参考 这个回答
更新: Jochen Ritzel 在下面的评论中提到,如果你只是想比较几个小时,而不是获取原始值,可以更简单地用:
abs(start_time - end_time) > timedelta(hours=6)