如您所知,Jalali日历每四年就有一次飞跃(当然也有一些例外(
它不是一年365天,而是366天:(
另一个问题是有些月份是29天,有些月份是30天,有些月是31天:|
我使用时刻库生成这些日期(当然使用fa方法(
这个名为"的网站做得很好。
var moment = require('moment-jalaali')
moment().format('jYYYY/jM/jD')
现在我的问题是如何确定哪些月份是29、30和31哪一年是闰年?
在我以前的项目中,我遇到了同样的问题,你必须使用这种方法来完成
这个函数不在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;
}
以下是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;
}
相同的JS代码,只是有点花哨!
function isLeapYearJalali(year) {
const matches = [1, 5, 9, 13, 17, 22, 26, 30];
const modulus = year % 33;
return matches.includes(modulus)
}