根据输入日期获取这周/这月/这季度/这年的第一天/最后一天

2024-02-02 03:18

本文主要是介绍根据输入日期获取这周/这月/这季度/这年的第一天/最后一天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天需求遇到一个问题,在此记录下
1,在算周k线,月K线的时候,需要根据输入的日期区间,获取对应的周k线和月K线。而对于输入的起止日期,需要判断该日期在这周/这月/这年的第一天/最后一天
因此需要变成,根据日期查找这周/这月/这季度/这年的第一天/最后一天:

查到的方案:
利用pandas可以解决:

 def get_start_date(self, start_date):
        '''
        根据不同的日期区间的K线类型,获取对应起始时间:
        1,周K线:输入起始日期周的第一天
        2,月k线:输入起始日期月份的第一天
        3,季k线:输入起始日期季度的第一天
        4,年k线:输入起始日期年份的第一天
        :param start_date:
        :return:
        '''
        now_date = datetime.datetime.strptime(start_date, '%Y%m%d')  # 当天
        if self.frequency == 'W':
            week_first_date = now_date-datetime.timedelta(days=now_date.weekday())
            return week_first_date.strftime('%Y%m%d')
        elif self.frequency == 'M':
            month_first_date = now_date + pd.tseries.offsets.DateOffset(days=1 - now_date.day)  # 当月最后一天
            return month_first_date.strftime('%Y%m%d')
        elif self.frequency == 'Q':
            q_first_date = now_date + pd.tseries.offsets.DateOffset(months=-((now_date.month - 1) % 3), days=1 - now_date.day)
            return q_first_date.strftime('%Y%m%d')
        elif self.frequency == 'A':
            year_laster_date = now_date + pd.tseries.offsets.DateOffset(months=1 - now_date.month, days=1 - now_date.day)  # 当年最后一天
            return year_laster_date.strftime('%Y%m%d')
        else:
            return start_date

   def get_end_date(self, end_date):
        '''
        获取各日期区间K线类型的终止时间
         1,周K线:输入终止日期周的最后一天
        2,月k线:输入终止日期月份的最后一天
        3,季k线:输入终止日期季度的最后一天
        4,年k线:输入终止日期年份的最后一天
        5,日K线:输入终止日期
        :param end_date:
        :return:
        '''
        now_date = datetime.datetime.strptime(end_date, '%Y%m%d')# 当天
        if self.frequency =='W':
            week_laster_date = now_date+datetime.timedelta(days=(6-now_date.weekday()))
            return week_laster_date.strftime('%Y%m%d')
        elif self.frequency =='M':
            month_laster_date = now_date + pd.tseries.offsets.DateOffset(months=1, days=-now_date.day)  # 当月最后一天
            return month_laster_date.strftime('%Y%m%d')
        elif self.frequency == 'Q':
            q_laster_date = now_date + pd.tseries.offsets.DateOffset(months=3 - ((now_date.month - 1) % 3), days=-now_date.day)  # 当季最后一天
            return q_laster_date.strftime('%Y%m%d')
        elif self.frequency =='A':
            year_laster_date = now_date + pd.tseries.offsets.DateOffset(years=1, months=1 - now_date.month, days=- now_date.day)  # 当年最后一天
            return year_laster_date.strftime('%Y%m%d')
        else:
            return end_date
 

这篇关于根据输入日期获取这周/这月/这季度/这年的第一天/最后一天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/669323

相关文章

如何让你的一天有36小时

你经常听人说“真希望一天能多几个小时”或者类似的话吗?当然,现实中我们每天只有24小时。这么说吧,人和人怎样度过这24个小时是完全不同的。到现在这样的说法已经成了陈词滥调,但我们的24小时和Thomas Edison与Mother Theresa曾拥有的相同,和Oprah Winfrey与Bill Gates 今天拥有的也相同。就像老歌里唱的,“It’s in the way that yo

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

【Python如何输入升高和体重判断你是偏胖还是偏瘦】

1、求体质指数得Python代码如下: # BMI(Body Mass Index)指数:简称体质指数,# 是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。# 常用指标:BMI<18.5 偏瘦 18.5<=MBI<=24 正常 MBI>24 偏胖# 计算公式:BMI=体重kg/身高的平方ma = eval(input("请输入你的体重(kg):")) # 输入体重b = e

网页脚本输入这么简单

如何在网页中进行脚本操作呢? 研究了一下,很简单,用google浏览器的Console直接操作javaScript。思路: Created with Raphaël 2.1.0 开始 输入(如何输入) 点击(如何点击) 结束 下面是,通过脚本刷直播屏的实现,直接在Console输入即可 var words=new Arra

Spring 内部类获取不到@Value配置值问题排查(附Spring代理方式)

目录 一、实例问题 1、现象 2、原因 3、解决 二、Spring的代理模式 1、静态代理(Static Proxy) 1)原理 2)优缺点 3)代码实现 2、JDK动态代理(JDK Dynamic Proxy) 1)原理 2)优缺点 3)代码实现 3、cglib 代理(Code Generation Library Proxy) 1)原理 2)优缺点 3)代码实

【Qt6.3 基础教程 16】 掌握Qt中的时间和日期:QTimer和QDateTime的高效应用

文章目录 前言QTimer:定时任务的强大工具QTimer的基本用法高级特性:单次定时器 QDateTime:处理日期和时间获取当前日期和时间日期和时间的格式化输出日期和时间计算 用例:创建一个倒计时应用结论 前言 在开发桌面应用程序时,处理时间和日期是一个常见且重要的任务。Qt框架提供了强大的工具来处理与时间相关的功能,其中QTimer和QDateTime是最核心的类。本

Java格式化日期的三种方式

1)借助DateFormat类: public String toString(Date d) { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); return sdf.format(d); } 2)使用String.format()方法。 String.format()的用法类似于C语

获取Windows系统版本号(转)

https://blog.csdn.net/sunflover454/article/details/51525179

ApplicationContext 获取的三种方法

spring为ApplicationContext提供的3种实现分别 为:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext和 XmlWebApplicationContext,其中XmlWebApplicationContext是专为Web工程定制的。使用举例如下:    1. FileSystemXmlApplicati

输入url发生了什么

1.浏览器查询缓存,如果有缓存,则直接跳到第9步 2.浏览器询问操作系统服务器ip 3.操作系统做dns查询,返回ip地址给浏览器 4.浏览器打开对服务器的tcp连接(如果是https的话则更复杂) 5.浏览器通过tcp发送http请求 6.浏览器接收响应并且可能关掉Tcp连接,或者是重新使用连接处理新请求 7.浏览器检查响应是否为一个重定向(3xx结果状态码),或者是重新