年月偏移算法

2023-07-06  本文已影响0人  黄殿玺
private static String monthOffset(int year, int month, int offset){
    int mod = 15;
    int x = offset;
    offset = Math.abs(offset);
    if(x > 0){ //向后
        int i = (month + offset) / mod; //加年数
        int j = (month + offset) % mod; //余
        year = year + i;
        return year + "-" + j;
    } else {    //向前

        //没有超过最小值直接相减,没有到前一年
        if(month - offset >= 0){
            month = month - offset;
            return year + "-" + month;
        }
        if(offset < mod){
            //前一年
            year = year - 1;
            month = month + (mod - offset); //月份与偏移取反相加
            return year + "-" + month;
        } else {
            //前N年
            int i = offset / mod; //减年数
            int j = offset % mod; //取余
            if(month - j >= 0){
                year = year - i;
                month = month - j;
                return year + "-" + month;
            } else {
                year = year - i - 1;
                month = month + (mod - j);
                return year + "-" + month;
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读