Python:修改Datetime天数计数器,实现跨天日期差为1的统计
解决方案:统计跨天的天数(保留Datetime变量类型)
你的代码中datetime直接相减返回的days属性是取时间差的整数天数(不足24小时则为0),要实现“跨天就算1天”的需求,且保留checkin和checkout的datetime类型,可通过以下两种方法实现:
方法1:提取日期部分计算差值
直接调用datetime对象的date()方法获取纯日期对象,再计算差值的天数:
from datetime import datetime checkin = datetime(2022, 1, 30, 1, 15, 00) checkout = datetime(2022, 1, 31, 0, 0, 00) count_days = (checkout.date() - checkin.date()).days print(count_days) # 输出:1
此方法中checkin和checkout始终为datetime类型,仅在计算时提取日期部分,差值的days属性会直接返回两个日期的间隔天数。
方法2:调整时间至当天起始点后计算
将datetime对象的时分秒调整为当天0点,再计算时间差的天数:
from datetime import datetime checkin = datetime(2022, 1, 30, 1, 15, 00) checkout = datetime(2022, 1, 31, 0, 0, 00) # 调整为当天00:00:00 checkin_start = checkin.replace(hour=0, minute=0, second=0, microsecond=0) checkout_start = checkout.replace(hour=0, minute=0, second=0, microsecond=0) count_days = (checkout_start - checkin_start).days print(count_days) # 输出:1
这种方法通过replace()方法修改datetime的时间部分,保留变量的datetime类型,同时确保时间差的整数天数等于日期间隔。
内容的提问来源于stack exchange,提问作者odoo newbie
相关产品推荐
相关产品推荐

