Javascript Intl DatetimeFormatter as(ISO_8601 | custom)输出模式

时间:2015-04-30 07:49:33

标签: javascript icu intl ecmascript-intl

我想使用Intl.DateTimeFormat但是使用自定义模式进行输出。 我将此方法用于ICU日期格式的php版本,并且它运行良好。

$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文档,如ICU日期时间格式器的php版本。

我的javascript代码

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

我的javascript格式模式如EEEE d MMMM yyyy HH:mmMM yy dd等等,如何将ISO_8601模式化?

ISO_8601

PHP IntlDateFormatter::format

ICU Date formatter

ICU Date formats

1 个答案:

答案 0 :(得分:2)

你不能。

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

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