我正在尝试获取希伯来语日历日期,这样我就可以根据当前希伯来语日期创建函数。像这样的
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)