你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

Python 计算某个日期减10天的操作

2021-11-3 9:17:15
def dateMinus10Day(cls, dayno_str):
    daysofmonth = {  # 每个月的天数字典
        1: 31,
        2: 28,
        3: 31,
        4: 30,
        5: 31,
        6: 30,
        7: 31,
        8: 31,
        9: 30,
        10: 31,
        11: 30,
        12: 31
    }
    y = int(dayno_str[0:4])  # 从字符串 '2021-11-03' 取出年月日
    m = int(dayno_str[5:7])
    d = int(dayno_str[8:10])
    leapyear = 0   # 闰年标志
    date_int_10 = 0  # 日期减10天得到的结果 

    # 判断是否是闰年
    if ((y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)):
        leapyear = 1
    
    # 将字符串 '2021-11-03' 转为数字 20211103
    date_int = int(dayno_str[0:4]) * 10000 + int(dayno_str[5:7]) * 100 + int(dayno_str[8:10])

    # 开始日期相关的逻辑
    if int(dayno_str[8:10]) >= 10:
        date_int_10 = date_int - 10
    else:
        if m == 1: # 如果是1月,年要减1
            date_int_10 = (y - 1) * 10000 + 12 * 100 + d + 31 - 10
        elif m == 3: # 如果是3月,考虑2月是28天还是29天
            if leapyear:
                date_int_10 = y * 10000 + 2 * 100 + d + 29 - 10
            else:
                date_int_10 = y * 10000 + 2 * 100 + d + 28 - 10
        else:
            date_int_10 = y * 10000 + (m - 1) * 100 + d + daysofmonth[m - 1] - 10
    return date_int_10

如上代码,记录了一个函数,实现输入 '2021-11-03' 这样的字符串,减去10天后,得到的日期:20211024。其中有些日期计算的逻辑,以后再写日期计算时可以参考。