javascript 如何计算jalali历的闰年?

pxyaymoc  于 2023-01-01  发布在  Java
关注(0)|答案(3)|浏览(127)

如你所知,在贾拉利历法中每四年就有一次飞跃(当然,也有少数例外)
而且一年不是365天,而是366天:)
另一个问题是有些月份是29天有些月份是30天有些月份是31天:|
我使用时刻库来生成这些日期(当然使用fa方法)
这个叫تقویم的网站做得很好。

var moment = require('moment-jalaali')
moment().format('jYYYY/jM/jD')

现在我的问题是如何识别哪些月份是29,30和31,哪一年是闰年?

vxbzzdmp

vxbzzdmp1#

在我以前的项目我有同样的问题,你必须使用这个方法来做到这一点
javascript中没有这个函数但是这个算法对你的闰年很有效

internal static bool IsLeapYear(int y)
{
    int[] matches = { 1, 5, 9, 13, 17, 22, 26, 30 };
    int modulus = y - ((y / 33) * 33);
    bool K = false;
    for (int n = 0; n != 8; n++) if (matches[n] == modulus) K = true;
    return K;
}
xfb7svmp

xfb7svmp2#

以下是新浪Rahmani回答的JavaScript版本(y / 30应该向下取整,以便在JavaScript中正常工作):

function isLeapYearJalali(year) {
    const matches = [1, 5, 9, 13, 17, 22, 26, 30];
    const modulus = year - (Math.floor(year / 33) * 33);
    let isLeapYear = false;

    for (let i = 0; i != 8; i++) {
        if (matches[i] == modulus) {
            isLeapYear = true;
        }
    }

    return isLeapYear;
}
nbnkbykc

nbnkbykc3#

同样的JS代码,只是有点花哨!

function isLeapYearJalali(year) {
   const matches = [1, 5, 9, 13, 17, 22, 26, 30];
   const modulus = year % 33;
   return matches.includes(modulus)
}

相关问题