使用JS获取希伯来文日历日期



我正在尝试获取希伯来语日历日期,这样我就可以根据当前希伯来语日期创建函数。像这样的

if (monthName == "Tishrei") {
$('.Tishrei').css('display', 'block')

这样我就可以根据今天的日期来控制网页上显示的内容。

我试着像这个一样得到这个月的数字

var monthNumber = new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'narrow' }).format(new Date());

它正确地返回了月份的数字,但当我试图在switch语句中使用它时,它没有起作用,只是返回了默认值。这是我的切换声明:

switch (monthNumber) {
case 1:
monthName = "Tishrei"
break;

我还考虑过使用月份的名称-


var monthNumber = new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'narrow' }).format(new Date());

但是用英语写的希伯来语单词的拼写各不相同,我不知道在这种情况下使用哪种拼写。

有什么想法吗?

…但用英语书写的希伯来语单词的拼写各不相同,我不知道在这种情况下使用哪种拼写。

Intl对象应该使用CLDR项目中的数据,因此所有浏览器的英文名称都应该相同。

以下函数使用Intl.DateTimeFormat获取希伯来语月份名称。Safari、Firefox、Chrome和Opera返回相同的列表。也许Edge不同。

function getHebrewMonthNames() {
let d = new Date(2022,0);
let months = {};
let fNum = new Intl.DateTimeFormat('en-u-ca-hebrew', {month: 'numeric'});
let fName = new Intl.DateTimeFormat('en-u-ca-hebrew', {month: 'long'});
for (let i=1; i<366; i++) {
d.setDate(i);
if (!months[fNum.format(d)]) {
months[fNum.format(d)] = fName.format(d);
}
}
return months;
}
console.log(getHebrewMonthNames());
/* {
"1": "Tishri",
"2": "Heshvan",
"3": "Kislev",
"4": "Tevet",
"5": "Shevat",
"6": "Adar",
"7": "Adar II",
"8": "Nisan",
"9": "Iyar",
"10": "Sivan",
"11": "Tamuz",
"12": "Av",
"13": "Elul"
} */

根据列表获取当前月份名称的一个简单功能是:

function getHebrewMonthName(d = new Date()) {
return [,"Tishri", "Heshvan", "Kislev", "Tevet",
"Shevat", "Adar", "Adar II", "Nisan", 
"Iyar", "Sivan", "Tamuz", "Av", "Elul"]
[d.toLocaleString('en-u-ca-hebrew', {month: 'numeric'})];
}
console.log('Current Hebrew month from list: ' + 
getHebrewMonthName()
);
console.log('Current Hebrew month from Intl: ' +
new Date().toLocaleString('en-u-ca-hebrew', {month: 'long'})
);

因此,在控制台日志typeof(monthNumber)之后,它向我们显示它是一个字符串。

您需要将monthNumber更改为数字。

以下是如何做到这一点:

var monthNumber = Number(new Intl.DateTimeFormat('en-u-ca-hebrew', { month: 'narrow' }).format(new Date()))
switch (monthNumber) {
case 1:
monthName = "Tishrei"
case 2:
monthName = "Cheshvan"
case 3:
monthName = "Kislev"
break
}
console.log(monthName)

最新更新