Javascript Intl DatetimeFormatter как (ISO_8601|custom) шаблон вывода
Я хочу использовать Intl.DateTimeFormat, но с пользовательским шаблоном для вывода. Я использую этот метод для php-версии ICU dateformat, и он работает хорошо.
$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
или что?
2 ответа
Ты не можешь
Идея реализована Intl
заключается в том, чтобы дать вам "правильный" формат для всего, что вы запрашиваете, в соответствии с условиями предоставляемой локали, возможно, в зависимости от вложенных тегов расширения Unicode и аналогичных для настройки определенных поведенческих нюансов. Intl
не предоставляет никакого способа для указания и использования определенных шаблонов форматирования. Формат ISO-8601 не является подходящим форматом для любой конкретной локали, поэтому его нельзя использовать Intl
производить это.
Если вы хотите отформатировать дату в соответствии с определенным временным интервалом шаблона в требуемых числовых значениях, вам придется реализовать это самостоятельно, вызвав Date.prototype.getMonth
и аналогичные функции для получения чисел, а затем вставьте их в заданный шаблон.
вы можете отформатировать текст следующим образом:direction: rtl
HTML-тега
const date = new Date();
const weekday = new Intl.DateTimeFormat('fa-IR', {weekday: 'long'}).format(date.getDay());
const today = new Intl.DateTimeFormat('fa-IR', {dateStyle: 'long'}).format(date);
const fullDate = ` امروز: ${weekday} ${today}