3

我想使用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 格式模式中使用 iset ISO_8601 模式,例如EEEE d MMMM yyyy HH:mmorMM yy dd或等?

ISO_8601

PHP IntlDateFormatter::格式

ICU日期格式化程序

ICU 日期格式

4

1 回答 1

2

你不能。

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

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

于 2016-10-26T21:56:39.387 回答