0

我们国家的官方日历是 jalali!Jalali 是一种与公历有数学关系的日历。我想更改 JS 中的 Date() 以返回 jalali 值。为此有很多 lib 或 func,但我不想使用它们。我可以重新定义 Date() 吗?我在哪里可以查看 Date() 源?

4

2 回答 2

0

不要乱弄你不拥有的物品。您可以创建自己的日期对象,可能称为 jDate(在“jalali date”之后,我认为它与 Intl 对象的“波斯”日历相同)并在那里实现方法。

Intl.DateTimeFormat构造函数返回一个具有formatToParts方法的对象,您可以利用该方法来实现所需的 Date 方法,然后您可以处理下面的标准 Date 对象,但从方法返回 Jalali 值。例如,以英语获取所有当前日期部分:

let f = new Intl.DateTimeFormat('en-GB-u-ca-persian',{
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  weekday: 'long',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric',
  hour12: false,
});
console.log('Current Jalali date: ' + f.format(new Date()));

console.log('The parts:');  
f.formatToParts(new Date()).forEach(part => console.log(part.type + ': ' + part.value));

对于某些事情,您必须使用不同的选项多次运行 format 方法,例如获取月份名称和数字,因为两者都由月份选项指定:month: 'long'名称和month: 'numeric'数字。

于 2021-07-28T07:01:27.013 回答
0

您可以使用 toLocaleDateString();

let today = new Date().toLocaleDateString('fa-IR');
console.log(today);

fa-IR 适用于波斯-伊朗,但所有 ISO 国家代码都可以在这里找到

您也可以将选项设置为第二个参数,例如:

let options = { year: 'numeric', month: 'long', day: 'numeric' };
new Date().toLocaleDateString('fa-IR', options);
于 2021-07-28T05:24:00.080 回答