在CRM开发过程中,需要对当前时间范围的数据,同比去年,环比上月,做一个对比,其实不难,主要是在时间日期上,对润年的2月要特殊处理,实现方案如,仅供参考。

效果图:

 

代码参考,具体按自己要求修改一下就可以了。

 

 

str1 = "2024-02-01"
str2 = "2024-02-29"


f = int(str2[0:4])-1
print("当前年份")
print(f)

g = int(str2[5:7])
print("当前月份")
print(g)

#print(str(int(str1[0:4]) - 1) + str1[4:])  # 同比去年开始时间
#print(str(int(str2[0:4]) - 1) + str2[4:])  # 同比去年结束时间


if (f % 4 == 0 and f % 100 != 0) or (f % 400 == 0):
    if (g == 2):
        print("情形1:当前是润年的2月要特殊处理!")
        print("润年的二月,特殊显示,请把它设置为29")
        print(str(int(str1[0:4]) - 1) + str1[4:])  # 同比去年开始时间
        print(str(int(str2[0:4]) - 1) + "-" + str2[5:7] + "-" + "29")
    else:
        print("情形2:当前是润年,但不是2")
        print(str(int(str1[0:4]) - 1) + str1[4:])  # 同比去年开始时间
        print(str(int(str2[0:4]) - 1) + str2[4:])  # 同比去年结束时间
else:
    if (g == 2):
        print("情形3:不是润年,但是当前是2月,要把天数设置为28")
        print(str(int(str1[0:4]) - 1) + str1[4:])  # 同比去年开始时间
        print(str(int(str2[0:4]) - 1) + "-" + str2[5:7] + "-" + "28")
    else:
        print("情形4:当前不是润年,也不是2")
        print(str(int(str1[0:4]) - 1) + str1[4:])  # 同比去年开始时间
        print(str(int(str2[0:4]) - 1) + str2[4:])  # 同比去年结束时间


print("===========================================华丽的分割线===========================================")

#30天的月份
list30 = [4,6,8,9,11]

#31天的月份
list31 = [5,7,10,12]

#获取月份,如果是1月:
a = str1[5:7]
print(a)
b = int(a)
c = str1[0:4]
print(c)
d = int(c)
if b == 1:
    print("当前是一月,年要减少一位")
    print(str(int(str1[0:4]) - 1) + "-12-01")  # 环比上月开始时间
    print(str(int(str1[0:4]) - 1) + "-12-31")  # 环比上月结束时间
elif b == 2:
    print("当前是2月,最大设置为28天,有BUG")
    print(str1[0:6] + str(int(str1[6]) - 1) + str1[7:])  # 环比上月开始时间
    print(str2[0:6] + str(int(str1[6]) - 1) + "-31")  # 环比上月结束时间
elif b == 3:
    if (d % 4 == 0 and d % 100 != 0) or (d % 400 == 0):
        e = "-29"
        print("当前是润年,上月最大设置为29")
        print(str1[0:6] + str(int(str1[6]) - 1) + str1[7:])
        print(str2[0:6] + str(int(str1[6]) - 1) + str(e))
    else:
        e = "-28"
        print("今年是普通的2月,只有28")
        print(str1[0:6] + str(int(str1[6]) - 1) + str1[7:])
        print(str2[0:6] + str(int(str1[6]) - 1) + str(e))
elif b in list30:
    print("当前是30天的月份")
    print(str1[0:6] + str(int(str1[6]) - 1) + str1[7:])  # 环比上月开始时间
    print(str2[0:6] + str(int(str1[6]) - 1) + "-31")  # 环比上月结束时间
elif b in list31:
    print("当前是31天的月份")
    print(str1[0:6] + str(int(str1[6]) - 1) + str1[7:])  # 环比上月开始时间
    print(str2[0:6] + str(int(str1[6]) - 1) + "-30")  # 环比上月结束时间
else:
    pass
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。