const readline = require('readline-sync');
let year = 0, month = 0, day = 0;//day2是输入的天数,day是计算每个月应有的天数,i是用来计算从month到month-1月的天数的一个变量
//获取正确的年
console.log('请输入一个年份:')
year = readline.question() - 0;
if (isNaN(year) || (year < 1900 || year > 2020)) {
while (true) {
console.log('请重新输入一个年份在(1900-2020年之间)');
year = readline.question() - 0;
if (!isNaN(year) && (year >= 1900 && year <= 2020)) {
break;
}
}
}
//判断输入正确的月份
console.log('请输入一个月份:')
month = readline.question() - 0;
if (isNaN(month) || (month > 12 || month < 1)) {
while (true) {
console.log('请重新输入月份在(1-12月之间)');
month = readline.question() - 0;
if (!isNaN(month) && (month >= 1 && month <= 12)) {
break;
}
}
}
//根据输入的月份,判断对应的天数。
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
day = 29;
} else {
day = 28;
}
}
else if (month <= 7 && month % 2 != 0 || month > 7 && month % 2 == 0) {
day = 31;
}
else {
day = 30;
}
//判断输入正确的天数
console.log('请输入日期');
let day2 = readline.question() - 0;
if (day2 > day || isNaN(day2)) {
while (true) {
console.log(`输入错误,请重新输入一个数字,最大输入${day}`);
day2 = readline.question() - 0;
if (day2 < day && !isNaN(day2)) {
break;
}
}
}
//累积天数
day = 0;//上面已经计算出month的天数day,应该重新赋值为0,不然前面month的天数也会一起加进去。
for (let i = 1; i < month; i++) {
if (i == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
day += 29;
} else {
day += 28;
}
}
else if (i <= 7 && i % 2 != 0 || i > 7 && i % 2 == 0) {
day += 31;
}
else {
day += 30;
}
}
console.log(`${year}年${month}月${day2}日是这一年的第${day + day2}天`);