如何将Python的timedelta计算结果转换为仅显示小时单位
解决方案
datetime模块计算时间差返回的timedelta类型对象,默认按「天 小时:分钟:秒」格式输出,要仅显示总小时数按以下方式处理即可:
- 调用
timedelta对象的total_seconds()方法获取包含天数在内的全部总秒数(不要直接使用duration.seconds属性,该属性仅返回不足1天部分的秒数,会漏掉天数对应的时长,导致计算错误) - 总秒数除以3600(1小时=3600秒)即可得到总小时数,可按需选择保留小数或取整。
完整可运行代码
import datetime as dt start_datetime_str = '1/04/2021 7:55' end_datetime_str = '14/05/2021 9:55' # 字符串转datetime对象 start_datetime_obj = dt.datetime.strptime(start_datetime_str, '%d/%m/%Y %H:%M') end_datetime_obj = dt.datetime.strptime(end_datetime_str, '%d/%m/%Y %H:%M') # 计算时间差 duration = end_datetime_obj - start_datetime_obj # 转换为总小时数 total_hours = duration.total_seconds() / 3600 # 不同输出格式示例 # 保留原始小数 print(total_hours) # 截断取整 print(int(total_hours)) # 四舍五入到整数 print(round(total_hours))
上述示例输入的时间差计算结果为1034.0小时,和预期的43天零2小时换算结果一致。
内容的提问来源于stack exchange,提问作者user15912115
相关产品推荐
相关产品推荐

