首页 > 解决方案 > 重新定义 Date() javascript

问题描述

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

标签: javascriptdatecalendarbuilt-inredefine

解决方案


不要乱弄你不拥有的物品。您可以创建自己的日期对象,可能称为 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'数字。


推荐阅读