python 获取一年中所有工作日列表来辅助计算工作时间内的时间差
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 获取一年中所有工作日列表来辅助计算工作时间内的时间差相关推荐
- python获取最近N天工作日列表、节假日列表
# 获取最近两周工作日列表.节假日列表 import datetime import chinese_calendar import time import pandas as pd# 将时间戳转换成 ...
- python 获取文件夹所有文件列表_python获取文件夹下所有文件及os模块方法
python获取文件夹下所有文件 方法一:使用os.listdir import os for filename in os.listdir(r'c:\windows'): print filenam ...
- python获取微信公共平台消息列表和用户头像
转载需注明原文地址:http://blog.csdn.net/btyh17mxy/article/details/25207889 刚写的模拟登陆的方式从获取微信公众平台消息列表和用户头像的库,之后还 ...
- Python 获取目录下的文件列表,并自然排序
在实际的算法与程序开发中,经常需要面对的场景就是对同一目录内的文件进行批量操作.并且很多时候目录中的文件明明是有规律的,同时希望程序在进行处理时也是按照一定的顺序进行. 方法 1 >>&g ...
- 使用Python获取Excel文件中单元格公式的计算结果
假设有如下Excel文件,其中第二个WorkSheet中数据如下: 其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下: 代码运行结果: ----------相关阅读---------- 1 ...
- python获取url列表参数_python 获取url中的参数列表实例
Python的urlparse有对url的解析,从而获得url中的参数列表 import urlparse urldata = "http://en.wikipedia.org/w/api. ...
- python 时间格式 工作日_python使用time、datetime返回工作日列表实例代码
最近在学习python,动手做了一个自动填写日报的小工具:由于请求中包含时间,格式如:2016-08-04:所以就了解了一下python的时间日期相关函数:这里做简单记录. 函数功能非常简单:获取当月 ...
- python获取两个日期间的工作日
python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...
- python最小值函数_Python3 min() 函数详解 获取多个参数或列表中的最小值
Python3 min() 函数详解 获取多个参数或列表中的最小值 min()函数的主要作用是获取对象中最小的值,参数可以是任何可迭代对象(字符串.列表.元组.字典等),可以是一个参数内的值进行对比, ...
最新文章
- LeetCode简单题之设计停车系统
- 2017 湘潭邀请赛JSCPC GJ
- sklearn svm如何选择核函数_使用python+sklearn实现成对度量、相关性和核函数
- R-CNN-减少region proposals的数量:NMS(非极大值抑制)
- 什么是1st tier conference?
- 5 计算机组成原理第四章 指令系统
- UI设计不能忽略的字体设计素材
- 力扣——查找常用字符
- mysql 插入汉字出现问号 解决方法
- windows 下搭建 git 服务器 gogs
- 计算机操作系统详细学习笔记(五):文件管理
- 惠普m202dw_惠普HP LaserJet Pro M202dw 驱动
- 马悦凌:从初级护士到“民间奇医”[7]
- 当年的好记星、诺亚舟都去哪了?
- Oracle Coherence 3.5 读书笔记之3 - 满足性能,可扩展和可用性目标
- 11、Nepxion Discovery 之全链路界面操作蓝绿灰度发布
- HDLBits学习笔记——状态机(中)
- 有糖UTOUU网赚攻略
- 打破时间的束缚(转)
- linux vi后不保存退出,linux下退出VI的方法:不保存退出