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;
}
}
}
}
网友评论