【Python实战】chinesecalendar模块处理中国股市交易日期

我们知道中国上海证券交易所和深圳证券交易所日常交易日期为星期一到星期五,并且法定节假日不交易。
我们可以通过chinesecalendar模块判断某一天是否为工作日(中国法定工作日,调休的时候有可能周末也是工作日),通过datetime模块判断某一天是否为周末。
实际案例:判断离当天间隔N天是否为股票交易日,N可以为负数,正数时为当前日期N天前,负数时为当前日期N天后。

chinesecalendar模块
pip install chinesecalendar
有两个函数is_workday(date)-是否为工作日、is_holiday(date)-是否为节假日
内置datetime.date模块
有一个函数weekday()-某一天星期几   规则:星期一为0、星期天为6
比如2020-10-10日,为星期六,因为放假调休该日尽管是周末,但是工作日

比如2020-10-08日,为星期四,因为放假调休该日不是周末,但不是工作日

完整代码段

# -*- coding: utf-8 -*-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:chinese_workday.py
#日期:2020-10-16
#备注:中国节假日  pip install chinesecalendar  https://pypi.org/project/chinesecalendar/
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''from chinese_calendar import is_workday, is_holiday
from datetime import date
from datetime import timedeltadef is_work_day():april_last = date(2020, 10, 10)   # datetime.dateprint(is_workday(april_last))     # Trueprint(is_holiday(april_last))     # Falseprint(april_last.weekday())       # 5-星期六# 当前日期N天前的证券交易日
def get_trade_day(n):dt = date.today()trade_day = '20201016'if n < 0:t = -nelse:t = nfor i in range(100):if n<0:delta_day = timedelta(days=-i)else:delta_day = timedelta(days=i)trade_day = dt-delta_dayif is_workday(trade_day) and trade_day.weekday()<5:       # 工作日并且不是周末if t ==0:breakt = t -1print(trade_day.strftime('%Y%m%d'))return trade_day.strftime('%Y%m%d')if __name__ == '__main__':#is_work_day()get_trade_day(-2)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git】码云Gitee.com管理项目全流程

Gitee.com 是 OSCHINA.NET 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管。目前已有超过 500 万的开发者选择 Gitee。 官网&#xff1a;https://gitee.com/ 为了在Gitee.com上管理项目&#xff0c;首先需要在上面注册用户、设置SSH公钥&#xff0c;下面简单介绍一…

【Jmeter篇】jmeter+Ant+Jenkins实现自动化测试集成(一)

一.简介 1、什么是ant? ant是构建工具&#xff0c;把代码从某个地方拿来&#xff0c;编译&#xff0c;再拷贝到某个地方去等等操作 JMeterAnt是比较常见的自动化测试框架&#xff0c;因为JMeter、Ant都是由java开发的&#xff0c;所以此性能测试框架具有良好的跨平台性&am…

python网络编程3-socketserver模块

一、复习 # 解决黏包问题 #为什么会出现黏包问题# 首先只有在TCP协议中才会出现黏包现象# 是因为TCP协议是面向流的协议# 在发送的数据传输过程中有缓存机制来避免数据丢失# 因此在连续发送小数据的时候&#xff0c;以及接收大小不符的时候都容易出现尿包现象# 本质还是因为我…

【测试】测试开发成长学习路线--引导篇

转载自&#xff1a;https://blog.csdn.net/u011541946/article/details/73382294 我相信&#xff0c;有很多测试人员会不断问自己&#xff0c;自己到底要不要坚持做测试&#xff0c;测试的职业发展到底怎么样&#xff1f;如果你还在迷茫&#xff0c;在到处找各种大牛问类似的问…

【Jmeter篇】jmeter Ant Jenkins接口自动化测试集成之半路逆转(二)

一、更改方案 由于上一篇文章【Jmeter篇】jmeterAntJenkins实现自动化测试集成&#xff08;一&#xff09;https://blog.csdn.net/qq_36502272/article/details/102682966中build.xml在cmd下执行ant正常且生成jtl文件和html文件&#xff0c;但是在jenkins构建多次一直失败&…

pycharm无法导入本地模块问题

导入语句&#xff1a; 办法一 根本不起作用 办法二&#xff1a; 在python安装位置的D:\usedtool\python\Lib\site-packages下建立一个.pth文件 里面把项目地址写上&#xff1a; 最后运行程序。虽然有红线但是运行无误。。搞定

【数据库】Mysql删除重复记录只保留一条

实际工作中&#xff0c;有可能会对数据库中的数据进行再次加工。假设有个表记录的是技术文章&#xff0c;有三个字段&#xff1a;st_link&#xff08;文章链接&#xff09;、st_title&#xff08;文章章节标题&#xff09;、st_name&#xff08;文章名称&#xff09; 假设初始…

【Jmeter篇】jmeter+Ant+Jenkins接口自动化测试集成之报告优化(三)

增加更加详细测试报告及优化jenkins测试报告样式显示 1、下载优化模板 jmeter-results-shanhe-me.xsl&#xff0c;拷贝到jmeter的C:\jmeter\apache-jmeter-5.0\extras目录中 2、设置测试输出报告要输出的内容&#xff1a;同样在jmeter.properties中&#xff0c;设置需要输出的…

python 反射机制

一、前言 1 2 3 4 5 def f1(): print("f1是这个函数的名字&#xff01;") s "f1" print("%s是个字符串" % s) 在上面的代码中&#xff0c;我们必须区分两个概念&#xff0c;f1和“f1"。前者是函数f1的函数名&#xff0c;后者只是一…

python 枚举类型

# enumerate 使用场景&#xff1a;对一个列表或者数组既要遍历索引又要遍历元素时使用 # 比如&#xff1a; list [Spring, Summer, Fall, Winter] for index,value in enumerate(list):print(index,value) #当然也可以 for i in range(0,len(list)):print(i,list[i]) # enumer…

3333

一、安装Email Ext Recipients Column Plugin和Email Extension Plugin插件 二、设置QQ邮箱授权码 https://service.mail.qq.com/cgi-bin/help?subtype1&&id28&&no1001256 三、系统管理-系统设置 1、Jenkins Location设置主机名和系统管理员邮件地址 2、Ex…

【JMeter】Threads(users)3种类型

线程&#xff08;用户&#xff09;Threads(Users) &#xff1a;线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程下。所有的任务都是基于线程组。 有三种类型&#xff1a;分别代表测试准备工作&#xff0c;测试执行&#xff0c;测试完成后操…

python __new__中单例的作用

__new__() 方法的特性&#xff1a; __new__() 方法是在类准备将自身实例化时调用。__new__() 方法始终都是类的静态方法&#xff0c;即使没有被加上静态方法装饰器。类的实例化和它的构造方法通常都是这个样子&#xff1a; class MyClass(object):def __init__(self, *args, *…

【安全测试】可怕的越权

之前看了一篇越权文章深受启发&#xff0c;于是就产生了下面的一系列想法&#xff0c;纯属个人观点&#xff0c;但不局限于此&#xff0c;如有更好想法的朋友&#xff0c;可留言自己观点。 一、登录权限越权 1、登录时长失效&#xff0c;这时当用户仍在此功能页面时&#xff0…

【JMeter】Thread Group下的组件Sampler取样器

我们创建了线程组Thread Group后&#xff0c;会在它下面add组件Sampler取样器。 1. 取样器用来向服务器发送请求&#xff0c;记录响应信息&#xff0c;响应时间的最小单元。 2. 用监听器可以查看取样结果&#xff0c;也可以结合断言进一步验证响应接口是否符合预期。 3. 取样器…

python并发编程1-进程

主进程和子进程 运行结果&#xff1a; 一旦进程创建后&#xff0c;进程就由操作系统调度 代码解析&#xff1a; 子进程与父进程 所以主进程的父进程就是pycharm args传参 一个参数 两个参数 join作用&#xff08;创建多个线程&#xff09;&#xff1a; 不一定哪个进程先执行…

Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)

Pytest中装饰器pytest.mark.parametrize(参数名,list)可以实现测试用例参数化&#xff0c;类似DDT 1、第一个参数是字符串&#xff0c;多个参数中间用逗号隔开 2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组&#xff0c;元…

python并发编程2-进程

一、信号量 # 多进程中的组件 # ktv # 4个 # 一套资源 同一时间 只能被n个人访问 # 某一段代码 同一时间 只能被n个进程执行from multiprocessing import Process,Semaphore import time import random def ktv(i,sem):sem.acquire()print(%s走进ktv %i)time.sleep(random.ran…

Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)

一、测试用例用excel管理&#xff0c;存放地址&#xff1a;C:\Users\wangli\PycharmProjects\Test\test\files\apiCase.xls 二、代码实现如下&#xff1a; 1、封装读取excel用例数据 2、Pytest装饰器pytest.mark.parametrize(参数名,list)实现登录模块2条测试用例数据驱动 im…

python并发编程3-进程

复习&#xff1a; # 锁 # 多个进程在同一时间只有一个进程能进入代码去执行# 信号量 Semaphore from multiprocessing import Semaphore # 用锁的原理实现的。内置了一个计数器 #在同一时间 只能有指定数量的进程执行某一段被控制住的代码#事件 # wait阻塞收到事件状态控制的同…