繁体   English   中英

重新定义日期()javascript

[英]redefine Date() javascript

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

您可以使用 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);

不要弄乱你不拥有的对象。 您可以创建自己的日期对象,可能称为 jDate(在“jalali 日期”之后,我认为它与 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: 'long'month: 'numeric'为号码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM