1.按照一年365天计算;
2.前7个月: 奇数月份是31天; 偶数月份是30天
3.后5个月: 偶数月份是31天; 奇数月份是30天
4.按照上述格式计算:
long days = 569; //天数
long year = days / 365; //年
long month; //月
long day; //日
long monthDays = days - (year * 365); //除去年份后剩余天数
int monthNum = 0; //月份
while (monthDays > 0) { //剩余天数计算月份
monthNum++;
//前7个月 为奇数的是31天 后5个月 为偶数的是31天
if (monthNum <= 7 && (monthNum & 1) != 0 || (monthNum > 7 && (monthNum & 1) == 0)) {
if ((monthDays - 31) < 0) {
monthNum--;
break;
}
monthDays -= 31;
} else if (monthNum <= 7 && (monthNum & 1) == 0
|| (monthNum > 7 && (monthNum & 1) != 0)) {
//前7个月 为偶数的是30天 后5个月 为奇数的是30天
if ((monthDays - 30) < 0) {
monthNum--;
break;
}
monthDays -= 30;
}
}
if (monthNum <= 0) { //若月份小于等于0,代表剩余天数不满足一个月的天数,则月份为0
month = 0;
day = days - (year * 365);
} else {
month = monthNum;
day = monthDays;
}
String time = (year > 0 ? (year + "年") : "") + (month > 0 ? (month + "月") : "") + day + "天";
System.out.println(days + "天,转换成:" + time);