J'essaye date-fns v2.
Je souhaite mettre en forme une date dans une chaîne en utilisant le toDate
a > et format
fonctions:
import { format, toDate } from 'date-fns' format(toDate('2019-02-11T14:00:00'), 'MM/dd/yyyy')
Mais obtenez l'erreur suivante:
RangeError: valeur de temps non valide
4 Réponses :
La méthode toDate ne peut pas lire ce format.
Essayez de convertir en Date lke ceci:
var date = new Date('2019-02-11T14:00:00')
date-fns 2.0.0-alpha.27 (démo: https: // stackblitz .com / edit / js-tztuz6 )
Utilisez parseISO :
import { format, parse } from 'date-fns' const formattedDate = format(parse('2019-02-11T14:00:00'), 'MM/DD/YYYY');
date-fns v1.30.1 (démo: https://stackblitz.com/edit/js-mt3y6p )
Utilisez parse :
import { format, parseISO } from 'date-fns' const formattedDate = format(parseISO('2019-02-11T14:00:00'), 'MM/dd/yyyy');
Parse () dans 2.x fonctionne différemment de 1.x. Dans 2.x, il faut désormais toujours un deuxième paramètre pour spécifier le format à comprendre.
@NineBerry J'ai mis à jour ma réponse. Cela fonctionne maintenant pour 1.x et 2.x.
Il semble que vous utilisez la version 2.0 de date-fns, qui est encore en état alpha (développement) actuellement.
Les fonctions disponibles et leur fonctionnement semblent encore changer fréquemment. Par exemple, dans la version v2.0.0-alpha.26 toDate ()
peut gérer les paramètres de chaîne , il ne peut pas faites-le plus longtemps dans la version v2.0.0-alpha.27. Il existe un nouveau parseISO ()
a > à la place.
Cela devrait fonctionner maintenant:
format(parseISO('2019-02-11T14:00:00'), 'MM/dd/yyyy')
Cependant, alors que la version 2 est encore en version bêta, je suggérerais d'utiliser la version stable 1. x pour le moment.
En fait, je suggérerais de ne pas utiliser du tout la bibliothèque. Introduire tous ces changements de rupture allant de la version 1 à la version 2 et changer complètement l'interface plusieurs fois lors du développement de la version 2 signifie qu'ils introduiront probablement d'autres changements de rupture à l'avenir ...
Je dois être d'accord avec toi. Mais par rapport à moment.js, date-fns est rapide et plus léger.
Btw, encore un cas à valider:
import { isValid, parseISO, parse } from 'date-fns' // Date valid if (isValid(parseISO('2019-11-27 09:45:00'))) { let dt = parse('2019-11-27 09:45:00', 'yyyy-MM-dd HH:mm:ss', new Date()) }
Quelles sont ces fonctions (
format ()
ettoDate ()
) censées être, ou vraiment d'où viennent-elles? Ce ne sont pas du JavaScript standard.D'où vient le
toDate ()
? Vérifiez la syntaxe. Je pensais qu'il devrait être au format(toDate ('2019-02-11T14: 00: 00'), 'aaaa-mm-jjThh: mm: ss')
date-fns a une fonction
parse
mais pas de fonctiontoDate
@phuzi La nouvelle version 2.0 alpha a une fonction toDate (). date-fns.org/v2.0.0-alpha.26/docs/ auDate