年月偏移算法

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;
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容