python获取两个日期间的工作日
- import datetime
- # 计算两个日期之间的工作日数,非天数.
- class workDays():
- def __init__(self, start_date, end_date, days_off=None):
- """days_off:休息日,默认周六日, 以0(星期一)开始,到6(星期天)结束, 传入tupple
- 没有包含法定节假日,
- """
- self.start_date = start_date
- self.end_date = end_date
- self.days_off = days_off
- if self.start_date > self.end_date:
- self.start_date,self.end_date = self.end_date, self.start_date
- if days_off is None:
- self.days_off = 5,6
- # 每周工作日列表
- self.days_work = [x for x in range(7) if x not in self.days_off]
- def workDays(self):
- """实现工作日的 iter, 从start_date 到 end_date , 如果在工作日内,yield 日期
- """
- # 还没排除法定节假日
- tag_date = self.start_date
- while True:
- if tag_date > self.end_date:
- break
- if tag_date.weekday() in self.days_work:
- yield tag_date
- tag_date += datetime.timedelta(days=1)
- def daysCount(self):
- """工作日统计,返回数字"""
- return len(list(self.workDays()))
- def weeksCount(self, day_start=0):
- """统计所有跨越的周数,返回数字
- 默认周从星期一开始计算
- """
- day_nextweek = self.start_date
- while True:
- if day_nextweek.weekday() == day_start:
- break
- day_nextweek += datetime.timedelta(days=1)
- # 区间在一周内
- if day_nextweek > self.end_date:
- return 1
- weeks = ((self.end_date - day_nextweek).days + 1)/7
- weeks = int(weeks)
- if ((self.end_date - day_nextweek).days + 1)%7:
- weeks += 1
- if self.start_date < day_nextweek:
- weeks += 1
- return weeks
获取结果:
- import datetime
- startdate = datetime.datetime(2018,1,11,20,20,20)
- enddate = datetime.datetime(2019,1,11,20,20,20)
- work = workDays(startdate,enddate) # 需要传入两个datetime格式日期
- print(list(work.workDays())) # 获取一个元素为datetime日期格式的工作日期列表
- print(work.daysCount()) # 获取工作日期的天数
- print(work.weeksCount()) # 获取非工作日的天数
- for i in work.workDays(): # 获取每一个工作日期
- print(i)
- print(dir(work)) # 获取work的所有方法
python获取两个日期间的工作日的更多相关文章
- MySql获取两个日期间的时间差
[1]MySql 语言获取两个日期间的时间差 DATEDIFF 函数可以获得两个日期之间的时间差.但是,这个函数得出的结果是天数. 需要直接获取秒数可使用TIMESTAMPDIFF函数.应用示例如下: ...
- JS获取两个日期间的所有日期
var stime = '2018-07-25'; //开始日期 var etime = '2018-08-02'; //结束日期 getdiffdate(stime,etime); //获取两日期之 ...
- python 计算两个日期间的小时数
#!/usr/bin/env python #encoding: utf-8 import datetime def dateDiffInHours(t1, t2): td = t2 - t1 ret ...
- SQL Server 获取两个日期间的日期
declare @start datetime declare @end datetime set @start = '2018-01-25' set @end = '2018-02-03' sele ...
- Oracle计算两天两个日期间相差的天数
Oracle计算两天两个日期间相差的天数: select to_date('19930411','yyyymmdd')-to_date('19890507','yyyymmdd') from dual ...
- Java 两个日期间的天数计算
在Java中计算两个日期间的天数,大致有2种方法:一是使用原生JDK进行计算,在JDK8中提供了更为直接和完善的方法:二是使用第三方库. 1.使用原生的JDK private static long ...
- [Xcode 实际操作]九、实用进阶-(4)计算两个日期间的差值
目录:[Swift]Xcode实际操作 本文将演示如何计算两个日期之间的差值. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit class ...
- JavaScript如何计算两个日期间的时间差
<script type="text/javascript"> /* * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒 * 其中 ...
- [java]察看两个日期间差多少秒/小时/天
Java 中Date类getTime()的方法返回从1970-1-1以来的毫秒数,这是下面函数运行的基础. package com.example.demo; import java.text.Par ...
随机推荐
- JAVA自学笔记15
JAVA自学笔记15 @例题1:共有5个学生,请把五个学生的信息存储到数组中,并遍历数组,并获取每个学生的信息 Students[] students=new Student[5]; Student ...
- 完善mui的tap及longtap点击效果
以下为原版效果: 以下为我们改版的效果: 希望你们能看出差别,很细小,但更适合我们的需要.就是选中背景色的问题,官方的是点一下背景色就没有了,我们的是选中一直存在.
- ios之animateWithDuration的坑
[UIView animateWithDuration:<#(NSTimeInterval)#> delay:<#(NSTimeInterval)#> options:< ...
- Error-MVC: “/”应用程序中的服务器错误。
ylbtech-Error-MVC: “/”应用程序中的服务器错误. 1.返回顶部 1. “/”应用程序中的服务器错误. 运行时错误 说明: 服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁 ...
- Mockito-简单使用使用
参考案例:(本位使用markdown编写) git.oschina实例:https://gitee.com/lhhTestTool/LhhMockito # LhhMockitomock 单元测试 M ...
- 一句话Javascript实现价格格式化
//小数点后面如果超过3位则转换错误,如1.1234 正确的是1.1234但却错误的转换成了1.1,234 var test1 = '1234567890.123' var format = test ...
- Android Studio3.1.2升级问题:Configuration 'compile' is obsolete and has been replaced with 'implementation'.
每次升级Android Studio时,一般情况下Gradle版本的也会相应的升级,我之前Android Studio 3.0.1.Gradle 是4.1升级后为:Android Studio 3.1 ...
- vim配置go语法高亮
操作系统 : CentOS7.3.1611_x64 go 版本 : go1.8.3 linux/amd64 vim版本 :version 7.4.160 vim配置go语言语法高亮的问题已经遇到过好几 ...
- FreeBie—免费设计师专用素材网
FreeBie—免费设计师专用素材网 网站地址: https://freebiesupply.com/ 网站分类: 素材 浏览次数: 192 标签: 设计素材 Freebie Supply 是国外一家 ...
- 全面理解Java内存模型(JMM)及volatile关键字(转载)
关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java类加载器(ClassLoad ...