全栈式报表统计:Flask+Pandas获取各类起止日期

话不多说,有图有源码:

源码:

                if content[searchopdate]=='今天':
                    strbdate = date.today().strftime('%Y-%m-%d')
                    stredate = date.today().strftime('%Y-%m-%d')
                elif content[searchopdate]=='本周':
                    def get_current_week_dates():
                        today = datetime.today()
                        first_day_of_week = today - relativedelta(days=today.weekday())
                        last_day_of_week = first_day_of_week + relativedelta(days=6)
                        return first_day_of_week.date().strftime('%Y-%m-%d'), last_day_of_week.date().strftime('%Y-%m-%d')
                    strbdate, stredate = get_current_week_dates()
                elif content[searchopdate] == '本月':
                    this_month = date.today()
                    next_month = date.today() + relativedelta(months=1)
                    strbdate = (date(this_month.year, this_month.month, 1)).strftime('%Y-%m-%d')
                    stredate = (date(next_month.year, next_month.month, 1) - relativedelta(days=1)).strftime('%Y-%m-%d')
                elif content[searchopdate] == '本季':
                    def get_quarter_range(date):
                        # 获取当前季度的第一天
                        first_day_of_quarter = date.replace(month=1 + ((date.month - 1) // 3) * 3, day=1)
                        # 获取当前季度的最后一天
                        last_day_of_quarter = first_day_of_quarter + pd.offsets.QuarterEnd(0)
                        return first_day_of_quarter.date().strftime('%Y-%m-%d'), last_day_of_quarter.date().strftime(
                            '%Y-%m-%d')
                    today = pd.to_datetime('today')
                    strbdate, stredate = get_quarter_range(today)
                elif content[searchopdate] == '今年':
                    today = date.today()
                    strbdate = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
                    stredate = (date(today.year, 12, 31)).strftime('%Y-%m-%d')
                elif content[searchopdate] == '明天':
                    today = datetime.now()
                    newday = today + timedelta(days=1)
                    strbdate = newday.strftime('%Y-%m-%d')
                    stredate = newday.strftime('%Y-%m-%d')
                elif content[searchopdate]=='下周':
                    def get_next_week_dates():
                        now = datetime.now()
                        last_week_same_day = now + relativedelta(weeks=1)
                        last_week_start = last_week_same_day - timedelta(days=last_week_same_day.weekday())
                        last_week_end = last_week_start + timedelta(days=6)
                        return last_week_start, last_week_end
                    next_week_start, next_week_end = get_next_week_dates()
                    strbdate = next_week_start.strftime('%Y-%m-%d')
                    stredate = next_week_end.strftime('%Y-%m-%d')
                elif content[searchopdate] == '下月':
                    next_month = date.today() + relativedelta(months=1)
                    next_last_month = date.today() + relativedelta(months=2)
                    strbdate = (date(next_month.year, next_month.month, 1)).strftime('%Y-%m-%d')
                    stredate = (date(next_last_month.year, next_last_month.month, 1) - relativedelta(days=1)).strftime(
                        '%Y-%m-%d')
                elif content[searchopdate] == '下季':
                    def get_next_quarter_range(date):
                        # 得到下季度的第一天
                        first_day_of_previous_quarter = datetime(date.year, (date.month - 1) * 3 + 1,
                                                                 1) - relativedelta(months=3)
                        # 得到下季度的最后一天
                        last_day_of_previous_quarter = first_day_of_previous_quarter + relativedelta(months=3, days=-1)
                        return first_day_of_previous_quarter.date().strftime(
                            '%Y-%m-%d'), last_day_of_previous_quarter.date().strftime('%Y-%m-%d')
                    current_date = datetime.now().date()
                    strbdate, stredate = get_next_quarter_range(current_date)
                elif content[searchopdate] == '明年':
                    today = date.today() + relativedelta(years=1)
                    strbdate = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
                    stredate = (date(today.year, 12, 31)).strftime('%Y-%m-%d')

                elif content[searchopdate] == '昨天':
                    today = datetime.now()
                    newday = today - timedelta(days=1)
                    strbdate = newday.strftime('%Y-%m-%d')
                    stredate = newday.strftime('%Y-%m-%d')
                elif content[searchopdate]=='上周':
                    def get_last_week_dates():
                        now = datetime.now()
                        last_week_same_day = now - relativedelta(weeks=1)
                        last_week_start = last_week_same_day - timedelta(days=last_week_same_day.weekday())
                        last_week_end = last_week_start + timedelta(days=6)
                        return last_week_start, last_week_end
                    last_week_start, last_week_end = get_last_week_dates()
                    strbdate = last_week_start.strftime('%Y-%m-%d')
                    stredate = last_week_end.strftime('%Y-%m-%d')
                elif content[searchopdate] == '上月':
                    this_month = date.today()
                    last_month = date.today() - relativedelta(months=1)
                    strbdate = (date(last_month.year, last_month.month, 1)).strftime('%Y-%m-%d')
                    stredate = (date(this_month.year, this_month.month, 1) - relativedelta(days=1)).strftime('%Y-%m-%d')
                elif content[searchopdate] == '上季':
                    def get_previous_quarter_dates(date):
                        # 计算指定日期所在季度的第一天
                        first_day_of_quarter = datetime(date.year, (date.month - 1) // 3 * 3 + 1, 1)
                        # 计算上一季度的第一天
                        first_day_of_previous_quarter = first_day_of_quarter - relativedelta(months=3)
                        # 上一季度的起始日期
                        start_date = first_day_of_previous_quarter.strftime('%Y-%m-%d')
                        # 上一季度的结束日期
                        end_date = (first_day_of_quarter - timedelta(days=1)).strftime('%Y-%m-%d')
                        return start_date, end_date

                    today = datetime.today()
                    strbdate,stredate = get_previous_quarter_dates(today)
                elif content[searchopdate] == '去年':
                    today = date.today() - relativedelta(years=1)
                    strbdate = (date(today.year, 1, 1)).strftime('%Y-%m-%d')
                    stredate = (date(today.year, 12, 31)).strftime('%Y-%m-%d')

呕心之作,干货满满,相信对你绝对有价值

对你有用,请来个点赞+关注+转发吧!

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【为什么要学习这门课?】 本课程重点介绍了如何在 Python 和 Jupyter 笔记本中执行EDA。除此之外,也会将软件工程基础知识与课程内容做关联教学,并提供关于linting、测试、命令行工具、数据工程API等方面的关键性说明。【本门课程亮点】 超过8小时的视频课程展示了如何使用AWS和谷歌云平台来解决机器学习和人工智能中的本质问题。本课程涵盖了如何通过Jupyter笔记本开始使用Python,然后继续深入到Python数据科学库中的各种具体细节,包括Pandas, Seaborn, scikit-learn和TensorFlow。【讲师介绍】  Noah Gift(诺亚·吉夫特)—— 亚马逊AWS机器学习专家、Google云架构专家Noah Gift拥有大约20年的Python编程经验,是Python Software Foundation的成员。亚马逊云服务AWS机器学习认证专家、AWS认证大数据专家、Google认证云架构专家,曾供职于ABC、索尼、迪士尼、AT&T等多家知名企业,担任CTO、总经理、首席数据科学家、首席云架构师等职位。同时,Noah Gift作为导师兼具丰富的教学、研究与行业经验。他在加州大学伯克利分校(UCB)信息学院数据科学硕士项目、加州大学戴维斯分校(UCD)管理研究生院商业分析硕士项目、以及西北大学数据科学硕士项目担任讲师,教授和设计机器学习、AI和数据科学等课程。【面向人群】 1、具有一定SQL经验的数据科学从业者2、希望在AWS和GCP上扩展基于云机器学习的数据科学从业者3、希望了解如何更深入实践数据科学原理的软件开发人员4、希望理解Python中的机器学习和人工智能,以有效管理技术团队的技术管理者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿桂天山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值