3
votes

Analyser et mettre en forme la date en chaîne

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 commentaires

Quelles sont ces fonctions ( format () et toDate () ) 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 fonction toDate


@phuzi La nouvelle version 2.0 alpha a une fonction toDate (). date-fns.org/v2.0.0-alpha.26/docs/ auDate


4 Réponses :


1
votes

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')


0 commentaires

3
votes

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');


2 commentaires

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.



7
votes

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.


2 commentaires

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.



1
votes

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())
}


0 commentaires