python 获取一年中所有工作日列表来辅助计算工作时间内的时间差

  • 思路来源

扣除一年365天(时间区间可自定义)中的节假日和周日休息日,得到工作日列表dataset,方便计算工作日与工作日之间的工作时间差。

思路来源

时间A: 2019-01-05 14:30:00 (周六)

时间B: 2019-01-07 15:20:00 (周一)

实际时间差: 时间B - 时间A = 2 天 0 小时 50 分钟 0 秒

而计算工作时间内的时间差则是: 时间B - 时间A = 8 小时 50 分钟 0 秒

这个时间的计算规则是:

              1. 定义一天工作八小时,8:00-12:00 13:00-17:002. 周一至周六属工作日3. 剔除非工作日时间(周日,节假日)所以在这里剔除一月六号是周日后 时间B-时间A应该等于:1工作日0小时50分钟0秒  而1工作日=8小时所以有如上得出的时间差。
import pandas as pd
import datetime
import json
import requests
def judgedate(datenum):url='http://api.goseek.cn/Tools/holiday?date={}'.format(datenum)html = requests.get(url=url).contentdata = json.loads(html.decode('utf-8'))value=data['data']return value

返回数据:正常工作日对应结果为 0, 法定节假日对应结果为 1, 节假日调休补班对应的结果为 2,休息日对应结果为 3¶

def weekend(day):weekday = datetime.datetime.strptime(day, '%Y%m%d').weekday()if weekday==5:return Trueelse:return False

判断是否是周六

def getnum(datenum):date = datetime.datetime.strptime(datenum,"%Y%m%d")num=date.timetuple().tm_ydayreturn num

得到一个日期是一年中的第多少天

def getBetweenDay(begin_date,end_date):  date_list = []  begin_date = datetime.datetime.strptime(begin_date, "%Y%m%d")  end_date = datetime.datetime.strptime(end_date, "%Y%m%d")  while begin_date <= end_date:  date_str = begin_date.strftime("%Y%m%d")  date_list.append(date_str)  begin_date += datetime.timedelta(days=1)  return date_list

遍历输出两个日期之间的日期,输出格式为‘20190101’

def get_date_match_list():date_list=getBetweenDay('20190101','20191231')num_list=[]match_list=[]remark_list=[]day=0for date in date_list:print(date)num=getnum(date)match=numvalue=judgedate(date)remark=''if value==0:match=match-dayremark='工作日'elif value==1:day+=1match=0remark='法定节假日'elif value==2:match=match-dayremark='调休工作日'elif value==3:is_saturday=weekend(date)if is_saturday:match=match-dayremark='周六加班'else:day+=1match=0remark='周日休息'num_list.append(num)match_list.append(match)remark_list.append(remark)date_match_list=pd.DataFrame({'date':date_list,'num':num_list,'match':match_list,'remark':remark_list})return date_match_list

num : 该日期在一年中的实际第多少天 match : 扣除后的第多少天

date_match_list=get_date_match_list()

输出结果

date_match_list.to_csv('date_match.csv')

dataset写入csv

GitHub完整项目

如果有更简单的方法请告诉我哦,这里是小shin,欢迎指点,谢谢。

python 获取一年中所有工作日列表来辅助计算工作时间内的时间差相关推荐

  1. python获取最近N天工作日列表、节假日列表

    # 获取最近两周工作日列表.节假日列表 import datetime import chinese_calendar import time import pandas as pd# 将时间戳转换成 ...

  2. python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法

    python获取文件夹下所有文件 方法一:使用os.listdir import os for filename in os.listdir(r'c:\windows'): print filenam ...

  3. python获取微信公共平台消息列表和用户头像

    转载需注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/25207889 刚写的模拟登陆的方式从获取微信公众平台消息列表和用户头像的库,之后还 ...

  4. Python 获取目录下的文件列表,并自然排序

    在实际的算法与程序开发中,经常需要面对的场景就是对同一目录内的文件进行批量操作.并且很多时候目录中的文件明明是有规律的,同时希望程序在进行处理时也是按照一定的顺序进行. 方法 1 >>&g ...

  5. 使用Python获取Excel文件中单元格公式的计算结果

    假设有如下Excel文件,其中第二个WorkSheet中数据如下: 其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下: 代码运行结果: ----------相关阅读---------- 1 ...

  6. python获取url列表参数_python 获取url中的参数列表实例

    Python的urlparse有对url的解析,从而获得url中的参数列表 import urlparse urldata = "http://en.wikipedia.org/w/api. ...

  7. python 时间格式 工作日_python使用time、datetime返回工作日列表实例代码

    最近在学习python,动手做了一个自动填写日报的小工具:由于请求中包含时间,格式如:2016-08-04:所以就了解了一下python的时间日期相关函数:这里做简单记录. 函数功能非常简单:获取当月 ...

  8. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

  9. python最小值函数_Python3 min() 函数详解 获取多个参数或列表中的最小值

    Python3 min() 函数详解 获取多个参数或列表中的最小值 min()函数的主要作用是获取对象中最小的值,参数可以是任何可迭代对象(字符串.列表.元组.字典等),可以是一个参数内的值进行对比, ...

最新文章

  1. 使用 Arthas 排查 SpringBoot 诡异耗时的 Bug
  2. i.MX 系列CPU HAB漏洞SecureBoot漏洞
  3. zx1 android版本,蔡司发布全画幅卡片机ZX1:安卓系统 内置Lightroom
  4. SpringCloud教程-分布式配置中心Config (SpringCloud版本Greenwich.SR4)
  5. Linux安装或升级openssh步骤和可能遇到的问题
  6. linux tar 使用
  7. 祝贺!王春雨入职一个月晋升副教授
  8. 理财产品收益可以保证吗?
  9. LeetCode Excel Sheet Column Number 表列数
  10. 软件著作权提交源代bai码格式_软件著作权使用说明书字体要求-软件著作权提交源代码格式要求...
  11. Intel(R) Ethernet connection (2) I219-LM 设置抓取VLAN tag报文
  12. FMEA-MSR步骤五:风险分析(二)
  13. 临危受命 青力支持:“信豫链”及时上线 保障河南中小企业带“资”复工
  14. 解决群晖 “由于系统可用存储空间不足,您将无法登录“ 的问题
  15. Picosmos 一键智能抠图
  16. LiveData vs EventBus?是否可以实现共赢
  17. 9 输入输出设备题库
  18. IDEA 2021 将分支代码合并到另一分支上
  19. git 切换分支提示当前有未提交?
  20. Hbase的安装与shell操作介绍

热门文章

  1. EastWave应用案例:同轴线仿真
  2. ubuntu golang 安装完成报 “command ‘go‘ not found“
  3. java抠图人物背景图片_人物抠图换背景两种实用方法!
  4. C++字符串转换为数值型
  5. 跳动的爱心代码--李峋爱心代码(完整源码)
  6. LuceneSolrElasticSearch-面试题
  7. 【JD的一人戏】之小羊踢足球第一篇
  8. 2016年7月17日学习 scratch 小兔子偷胡萝卜的故事
  9. 罗德里格斯旋转公式(Rodrigues‘ rotation formula)推导
  10. 安卓系统刷机怎么刷机_安卓手机解锁是什么意思 安卓手机刷机知识介绍【图文】...