#javascript #reactjs #datetime
#javascript #reactjs #datetime
Вопрос:
В моем приложении react я попытался отформатировать строку даты в <p>...</p>
теге, как показано ниже:
<p>
{new Intl.DateTimeFormat("en-US", {
year: "numeric",
month: "short",
day: "2-digit"
}).format(string)}
</p>
Примером string
является "2012-10-16T17:57:28.556094Z"
. Это сгенерировано RangeError: Invalid time value
. Однако при преобразовании String
в Date
приведенный ниже код сработал.
<p>
{new Intl.DateTimeFormat("en-US", {
year: "numeric",
month: "short",
day: "2-digit"
}).format(new Date(string))}
</p>
Не Intl.DateTimeFormat
должен быть в состоянии правильно проанализировать String
?
Комментарии:
1. Обратитесь к github.com/formatjs/formatjs/issues/1396
Ответ №1:
Не должен быть Intl.DateTimeFormat сможет правильно проанализировать строку?
Нет. У объектов DateTimeFormat нет анализатора. Метод format ожидает, что аргумент будет объектом Date (хотя любое значение, где ToNumber(value)
не NaN «работает»), а не строкой (см. ECMA-402).