python 递归计算若干工作日后的日期
import datetime
# 根据第一次计算出来的休息日数,计算还需要的工作日数。(递归调用)
def get_next_date(self, start_date, weekend_days):
if not weekend_days:
return start_date
new_weekend_days = 0
next_date = datetime.datetime.strptime(start_date.strftime("%Y-%m-%d"), "%Y-%m-%d")
for day in range(1, weekend_days + 1):
next_date = datetime.datetime.strptime(start_date.strftime("%Y-%m-%d"), "%Y-%m-%d") + datetime.timedelta(days=day)
if next_date.weekday() in (5, 6):
new_weekend_days += 1
if new_weekend_days:
next_date = self.get_next_date(next_date, new_weekend_days)
return next_date def workdays(self, receiv_date, testing_cycle=0, warning_days=0):
weekend_days = 0
days = testing_cycle - warning_days
if not days or not receiv_date:
return ""
next_date = datetime.datetime.strptime(receiv_date, "%Y-%m-%d")
# 首次计算包含周六、周日的天数
for day in range(1, days+1):
next_date = datetime.datetime.strptime(receiv_date, "%Y-%m-%d") + datetime.timedelta(days=day)
if next_date.weekday() in (5, 6):
weekend_days += 1
end_date = weekend_days and self.get_next_date(next_date, weekend_days) or next_date
return end_date.strftime("%Y-%m-%d")
python 递归计算若干工作日后的日期的更多相关文章
- java获取n个工作日后的日期, 排除周末和节假日(顺延)
一.写在前面 需求: 工作需要获取n个工作日后的日期, 需要排除weekend和holiday, holiday存在数据库中, 存入的形式是一个节日有起始日期和截止日期(以下文中有关于节假日的表截图) ...
- N个工作日后的日期
这里对特殊日期采用了模拟的方式,在实际开发中当然这些数据是从数据库中读取,调用方法时 只需传入开始时间(一般当前) 和N(代表N个工作日) /// <summary> /// 获取时间 / ...
- 前端yyyy-mm-dd格式 计算一段工作日后,日期
//计算一段工作日后,日期getWorkday(dat, itervalByDay) { function formatTen(f) { if (parseInt(f, 10) < 10) { ...
- python大数据工作流程
本文作者:hhh5460 大数据分析,内存不够用怎么办? 当然,你可以升级你的电脑为超级电脑. 另外,你也可以采用硬盘操作. 本文示范了硬盘操作的一种可能的方式. 本文基于:win10(64) + p ...
- Python标准库02 时间与日期 (time, datetime包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wa ...
- python获取一年所有的日期
python获取一年所有的日期 自动识别闰年. import arrow def isLeapYear(years): ''' 通过判断闰年,获取年份years下一年的总天数 :param years ...
- (转)Python标准库02 时间与日期 (time, datetime包)
原文:http://www.cnblogs.com/vamei/archive/2012/09/03/2669426.html https://www.liaoxuefeng.com/wiki/001 ...
- python获得当前工作目录和修改
import os curDir = os.getcwd() 最近使用Python 写了很多脚本,想导入脚本,发现不知道如何查看python 的默认工作目录,并修改默认工作目录. 方法/步骤 查 ...
- python 3 在工作中的应用
Python 3在工作中的使用 安装配置Python 3 在notepad++中配置Python 3 使用sql server数据库 操作Excel 发送email python 3 使用日志 安 ...
随机推荐
- 数据结构C++版-栈
一.概念 二.应用实例 1.进制转换 #include <stdlib.h> #include <iostream> #include <string> #incl ...
- Openstack贡献者须知 2 — 社区工作运作 & 代码贡献流程
目录 目录 前文列表 订阅邮件列表 Mailing Lists 社区工作运作流程 Openstack 代码贡献流程 PEP8 Python编程风格 查阅相关资源 前文列表 Openstack贡献者须知 ...
- bagging和boosting以及rand-forest
bagging: 让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯ ⋯h ...
- mysql8以上版本时区问题:The server time zone value乱码XXXX
异常类似: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. ...
- Python匹马行天下之初识python!
python的发展史 1989年,被称为龟叔的Guido在为ABC语言写插件时,产生了写一个简洁又实用的编程语言的想法,并开始着手编写.因为其喜欢Monty Python喜剧团,所以将其命名为pyth ...
- Vagrant安装步骤
Vagrant安装步骤 下载添加box镜像 vagrant box add base 远端的box地址或者本地的box文件名 建立box镜像关联 vagrant box add centos72 va ...
- 使用navicat 使用IP、用户名、密码直接连接linux服务器里面的数据库
一般新申请的服务器,没有开通3306端口的吧,反正我遇到的,要用Navicat去连接linux下的数据库,都必须填写两个地方的信息,才能链接成功. 如果想要只通过填写ip还有数据库用户名还有密码就可以 ...
- vue中获取节点.
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CSIC_716_20191101【编程语言、变量、垃圾回收机制】
编程语言分类:机器语言.汇编语言.高级语言. 机器语言:机器能直接识别的程序语言或指令代码(二进制指令),勿需经过翻译,每一操作码在计算机内部都有相应的电路来完成它 汇编语言:比机器语言略高级,用英文 ...
- jQuery - DOM对象和jQuery对象
DOM对象 : 直接使用JavaScript获取的节点对象 jQuery对象 : 使用jQuery选择器获取的节点对象 DOM对象和jQuery对象分别拥有一套独立的方法, 不能混用 <scri ...