将日期转换为小时

6 投票
1 回答
32813 浏览
提问于 2025-04-16 15:26

我想找出两个日期之间的时间差,然后把这个时间差换算成小时。大概是这样的:

开始时间 = 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)

撰写回答