如你所知,在贾拉利历法中每四年有一次闰期(当然,也有一些例外)
而不是一年365天,而是366天:)
另一个问题是,有些月份是29天,有些月份是30天,有些月份是31:
我使用moment库来生成这些日期(当然使用fa方法)
这个名为تقویم的网站做得很好。
var moment = require('moment-jalaali')
moment().format('jYYYY/jM/jD')现在我的问题是如何识别哪些月份是29、30和31,哪些年份是leap?
发布于 2020-03-25 18:54:23
在我之前的项目中,我遇到了同样的问题,您必须使用此方法来完成此操作
这个函数不是在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;
}发布于 2021-07-15 04:06:17
以下是新浪拉赫玛尼的答案的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;
}https://stackoverflow.com/questions/60847158
复制相似问题