python计算时间差.seconds时超过一天出错_计算时间差 过滤周末 每天只有白天11小时...

# 过滤周末

def reF(day):

if int(day.strftime('%w')) in [0, 6]:

return 0

else:

return 1

# 时间差

def reC(date1, date2):

return date2 - date1

# 计算天数 默认一天等与11小时

def reD(start_date, index):

m = 0

for x in range(index):

if x > 0: # 当天不算

day = start_date + timedelta(days=x)

m += reF(day)

return m * 11

# 计算小于1天的小时数

def reE(conut, d1, d2):

if conut > 0:

m = d1.replace(hour=18, minute=0, second=0, microsecond=0)

n = d2.replace(hour=7, minute=0, second=0, microsecond=0)

d = (d2 - n).total_seconds() + (m - d1).total_seconds()

return d / 60 / 60

else:

return 0

if __name__ == '__main__':

d1 = datetime.strptime('2019-10-25 14:41:20', '%Y-%m-%d %H:%M:%S')

d2 = datetime.strptime('2019-10-26 15:41:20', '%Y-%m-%d %H:%M:%S')

cha = reC(d1, d2)

chaday = cha.days # 差几天

chaseconds = cha.total_seconds() # 差多少秒

sum = 0

if chaday > 0:

sum = reD(d1, chaday)

c = chaseconds - chaday * 24 * 60 * 60

print('%d - %d = %d' % (chaseconds, chaday * 24 * 60 * 60, c))

print(reE(c, d1, d2))

sum += int(reE(c, d1, d2))

else:

# if 判断下 结束时间不能在周末

sum = int(chaseconds / 60 / 60)

print(sum)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值