【简单】算法nodeJs:计算日期到天数转换

148 阅读1分钟

描述

每一年中都有 12 个月份。其中,1,3,5,7,8,10,12 月每个月有 31 天;4,6,9,11 月每个月有 30 天;而对于 2 月,闰年时有 29 天,平年时有 28 天。
现在,对应输入的日期,计算这是这一年的第几天。

一个年份是闰年当且仅当它满足下列两种情况其中的一种:
∙这个年份是 4 的整数倍,但不是 100 的整数倍;
∙这个年份是 400 的整数倍。

输入描述:

在一行上输入三个整数 a,b,c(1900≦a≦2200),分别代表年、月、日。保证输入的日期是合法的。

输出描述:

输出一个整数,代表输入的日期是这一年的第几天。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    line = (await readline()).split(" ").map(Number);
    let monthArr = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    monthArr.length = line[1];
    // 判断是否是闰年并加上一天
    let isLeapYear =
        (line[0] % 4 === 0 && line[0] % 100 !== 0) || line[0] % 400 === 0
            ? 1
            : 0;

    let sum =
        parseInt(eval(monthArr.join("+"))) +
        line[2] +
        (line[2] > 2 ? isLeapYear : 0);
    console.log(sum);
})();