使用js写个方法计算5000年内有多少个对称日,如:20211202,反过来也是一样

要编写一个JavaScript函数来计算5000年内有多少个对称日,你可以按照以下步骤进行:

  1. 确定起始和结束日期。
  2. 遍历这个日期范围内的每一天。
  3. 对于每一天,将其转换为YYYYMMDD格式的字符串。
  4. 检查该字符串是否是对称的。
  5. 如果是对称的,则计数器加一。

以下是一个实现这个功能的JavaScript函数:

function countSymmetricDates(years = 5000) {
    let count = 0;
    const startDate = new Date();
    startDate.setFullYear(startDate.getFullYear() - years);
    startDate.setMonth(0, 1); // 设置为该年的第一天

    const endDate = new Date();
    endDate.setFullYear(endDate.getFullYear() + years);
    endDate.setMonth(11, 31); // 设置为该年的最后一天

    for (let date = new Date(startDate); date <= endDate; date.setDate(date.getDate() + 1)) {
        const year = date.getFullYear();
        const month = (date.getMonth() + 1).toString().padStart(2, '0');
        const day = date.getDate().toString().padStart(2, '0');
        const dateString = `${year}${month}${day}`;
        const reversedString = dateString.split('').reverse().join('');
        if (dateString === reversedString) {
            count++;
            console.log(dateString); // 可选:打印出对称日
        }
    }
    return count;
}

const symmetricDatesCount = countSymmetricDates();
console.log(`在5000年内有${symmetricDatesCount}个对称日。`);

注意:这个代码可能需要一些时间来运行,因为它会遍历5000年内的每一天。为了优化性能,你可以考虑只检查那些可能是对称日的日期(例如,只有月份和日期相同的日期,或者年份可以构成回文的日期)。但上面的代码为了简单起见,检查了5000年内的每一天。

另外,请注意JavaScript的Date对象在处理日期时可能会有一些边界情况,特别是在处理闰年和不同月份天数的问题上。这个简单的实现没有考虑所有这些边界情况,但在大多数情况下应该足够好用。如果你需要处理更复杂的日期逻辑,请考虑使用更强大的日期处理库,如date-fnsmoment.js

posted @ 2024-12-29 09:08  王铁柱6  阅读(23)  评论(0)    收藏  举报