Javascript Intl DatetimeFormatter 作为(ISO_8601|自定义)输出模式

Javascript Intl DatetimeFormatter as (ISO_8601|custom) output pattern

我想使用 Intl.DateTimeFormat 但要使用自定义输出模式。 我将此方法用于 php 版本的 ICU 日期格式,并且效果很好。

$fmt = datefmt_create(
    'fa_IR@calendar=persian',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'Asia/Tehran',
    IntlDateFormatter::TRADITIONAL,
    'EEEE d MMMM yyyy HH:mm' // as ISO_8601
);

echo datefmt_format($fmt, time()) . "\n";
// پنجشنبه ۱۰ اردیبهشت ۱۳۹۴ ۱۲:۱۲

如何在 Intl.DateTimeFormat 中将模式设置为 ICU 文档,例如 php 版本的 ICU 日期时间格式化程序。

我的javascript代码

console.log(new Intl.DateTimeFormat('fa-IR-u-ca-persian').format(new Date()));

如何在我的 javascript 格式模式中设置 ISO_8601 模式,如 EEEE d MMMM yyyy HH:mmMM yy dd 等?

ISO_8601

PHP IntlDateFormatter::format

ICU Date formatter

ICU Date formats

你不能。

Intl 实现的想法是根据您提供的语言环境条款,为您提供 "right" 格式的任何请求,可能受 Unicode 扩展子标签的约束,类似于配置某些行为的细微差别。 Intl 不提供任何方式来指定和使用特定的格式模式。 ISO-8601 格式不能保证是适合任何特定语言环境的格式,因此您不能使用 Intl 来生成它。

如果您想根据所需数值中的特定模式设置日期格式,您必须通过调用 Date.prototype.getMonth 和类似函数来自行实现它以获取数字,然后将它们插入提供的模式。