Intl.DateTimeFormat не удалось проанализировать действительное значение времени

#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).