7

如您所知,贾拉利历每四年有一次飞跃(当然,也有一些例外)

而不是一年 365 天,而是 366 天 :)

另一个问题是有些月份是 29 天,有些月份是 30 天,有些月份是 31 天:|

我使用矩库来生成这些日期(当然使用 fa 方法)

这个名为تقویم的网站做得很好。

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

现在我的问题是如何确定哪些月份是 29 和 30 和 31 以及哪一年是闰?

4

2 回答 2

6

在我以前的项目中,我遇到了同样的问题,您必须使用此方法来执行此操作

这个函数不在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;
}
于 2020-03-25T10:54:23.357 回答
0

这是 Sina 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;
}
于 2021-07-14T20:06:16.893 回答