Dans mon application React, j'ai essayé de formater une chaîne de date dans une balise <p>...</p> comme ci-dessous :

<p>
    {new Intl.DateTimeFormat("en-US", {
        year: "numeric",
        month: "short",
        day: "2-digit"
    }).format(string)}
</p>

Un exemple de string est "2012-10-16T17:57:28.556094Z". Cela a généré RangeError: Invalid time value. Cependant, en convertissant String en Date, le code ci-dessous a fonctionné.

<p>
    {new Intl.DateTimeFormat("en-US", {
        year: "numeric",
        month: "short",
        day: "2-digit"
    }).format(new Date(string))}
</p>

Intl.DateTimeFormat ne devrait-il pas pouvoir analyser String correctement ?

0
Holmes Queen 7 oct. 2020 à 21:34

1 réponse

Meilleure réponse

Intl.DateTimeFormat ne devrait-il pas pouvoir analyser correctement la chaîne ?

Non. DateTimeFormat les objets n'ont pas d'analyseur. Le format méthode s'attend à ce que l'argument soit un objet Date (bien que toute valeur où ToNumber(value) n'est pas NaN "fonctionne"), pas une chaîne (voir ECMA-402).

1
RobG 7 oct. 2020 à 23:06