优秀的编程知识分享平台

网站首页 > 技术文章 正文

python如何计算当前日期上月同天,这篇文章教会你

nanyue 2024-08-14 20:26:33 技术文章 12 ℃

直接上代码

import datetime
# 输入一个字符串日期
input_data = '20230331'
# 字符串格式化为datetime类型
format_data = datetime.datetime.strptime(input_data,"%Y%m%d")
# 获取当前日期距离本月第一天过去了多少天
days = format_data.day
# 获取当前月份 -1 ,表示上月,如果上月为0,则默认值为12月
months = format_data.month - 1 if format_data.month - 1 != 0 else 12

# 获取当天日期的月份
try:
    # 这里面还有问题,如果上月是28号,则1月必须是31号
    if (days == 28 or days == 29 ) and months == 2:
        add_months = format_data.replace(month=months,day=31)  # 得出上月同天如果是月末,走Exception
    elif days == 30  and format_data == format_data.replace(month=months + 2, day=1) - datetime.timedelta(days=1):
        # 当前日期=当月最后一天,则去上月末
        add_months = format_data.replace(month=months, day=31)
    else:
        add_months = format_data.replace(month=months, day=31)
        #
except ValueError as e:
    # 例如月末是31号,上月没有31号,程序就会报错,这个时候,就利用下面找上月末最后一天
    # 原理,本月第一天-1,就是上月月末
    add_months = format_data.replace(day=1) - datetime.timedelta(days=1)
print("当前日期:==>",format_data.strftime("%Y%m%d"),"上月同天:==>",add_months.strftime("%Y%m%d"))

Tags:

最近发表
标签列表