Python常用日期(财务日期)处理:获取本周/上周、本月/上月、本季度/上季度、本年/上年的第一天和最后一天

Python 依赖库:

import calendar

import datetime

from datetime import timedelta

获取今天日期:

#返回datetime格式:2023-04-05 10:38:35.82816

now = datetime.datetime.now()

#返回datetime格式:2023-04-05

now = datetime.datetime.now().date()

now = datetime.date.today()

关于calendar.monthrange函数说明:

calendar.monthrange(year,month)

传参:传入两个值,一个是当前的年份,另外一个是当前的月份

写法可以是:calendar.monthrange(now.year,now.month)

返回值:calendar.monthrange返回两个整数。

第一个值为该月第一天所在的星期几,对应的数字。0 - 6==>0(星期一)到6(星期日)

第二个值为该月一共几天。

获取昨天日期:

yesterday = now - timedelta(days=1)

获取明天日期:

tomorrow = now + timedelta(days=1)

获取本周第一天和最后一天:

this_week_start = now - timedelta(days=now.weekday())

this_week_end = now + timedelta(days=6-now.weekday())

获取上周第一天和最后一天:

last_week_start = now - timedelta(days=now.weekday()+7)

last_week_end = now - timedelta(days=now.weekday()+1)

获取本月第一天和最后一天:

this_month_start = datetime.datetime(now.year, now.month, 1)

this_month_end = datetime.datetime(now.year, now.month, calendar.monthrange(now.year, now.month)[1])

获取上月第一天和最后一天 :

last_month_end = this_month_start - timedelta(days=1)

last_month_start = datetime.datetime(last_month_end.year, last_month_end.month, 1)

获取本季第一天和最后一天:

m = now.month

this_quarter_month_start = int((m-1)/3)*3+1

this_quarter_month_end = this_quarter_month_start + 2

this_quarter_start = datetime.datetime(now.year, this_quarter_month_start, 1)

this_quarter_end = datetime.datetime(now.year, this_quarter_month_end, calendar.monthrange(now.year, this_quarter_month_end)[1])

获取上季第一天和最后一天:

last_quarter_end = this_quarter_start - timedelta(days=1)

last_quarter_start = datetime.datetime(last_quarter_end.year, last_quarter_end.month - 2, 1)

获取本年第一天和最后一天:

this_year_start = datetime.datetime(now.year, 1, 1)

this_year_end = datetime.datetime(now.year + 1, 1, 1) - timedelta(days=1)

获取去年第一天和最后一天:

last_year_end = this_year_start - timedelta(days=1)

last_year_start = datetime.datetime(last_year_end.year, 1, 1)

补充说明1: datetime.datetime类型和字符串的相互转换:

datetime.datetime类型转换为字符串:

last_year_start_star = last_year_start.strftime("%Y%m%d %X”)

字符串类型转换为datetime.datetime类型:

last_year_start = datetime.datetime.strptime(last_year_start_star, "%Y%m%d %X” )

补充说明2:上述各种时间可用于财务时间相关的数据处理,各种“周/月/季度/年度”的第一天和最后一天,取得具体天数后,可以做周/月/季度/年度的天数占比,做业务发展当前实时完成率计算,或者周/月/季度/年度的周/月/季度/年度预测。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值