Javascript Intl DatetimeFormatter as (ISO_8601 | custom) шаблон вывода

Я хочу использовать 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";
// پنجشنبه ۱۰ اردیبهشت ۱۳۹۴ ۱۲:۱۲

Как я могу установить шаблон в качестве документации ICU в Intl.DateTimeFormat, например php-версию средства форматирования даты и времени ICU.

Мой код javascript

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

Как можно использовать шаблон iset ISO_8601 в моем шаблоне формата javascript, например EEEE d MMMM yyyy HH:mm, MM yy dd и т. Д.?

ISO_8601

PHP IntlDateFormatter :: format

Средство форматирования даты ICU

Форматы дат ICU


person sweb    schedule 30.04.2015    source источник


Ответы (1)


Вы не можете.

Идея, реализованная Intl, состоит в том, чтобы предоставить вам «правильный» формат для всего, что вы запрашиваете, в соответствии с условиями предоставляемой вами локали, возможно, с учетом вложенных тегов расширения Unicode и аналогичных настройкам определенных поведенческих нюансов. Intl не предоставляет никакого способа указать и использовать определенные шаблоны форматирования. Формат ISO-8601 не является гарантированно подходящим форматом для какой-либо конкретной локали, поэтому вы не можете использовать Intl для его создания.

Если вы хотите отформатировать дату в соответствии с определенным шаблоном размещения желаемых числовых значений, вам придется реализовать его самостоятельно, вызвав Date.prototype.getMonth и аналогичные функции для получения чисел, а затем вставив их в предоставленный шаблон.

person Jeff Walden    schedule 26.10.2016