Moment: Avertissement de dépréciation inutile

Créé le 3 août 2015  ·  9Commentaires  ·  Source: moment/moment

Bonjour,
J'utilise moment js pour mon application et j'ai rencontré un problème. J'ai donc quelque chose comme ça :

if (!moment(inputValue).isValid()) {
  // some stuff going on here...
}

Comme vous le voyez, j'essaie d'utiliser la méthode isValid() uniquement à des fins de vérification. Parfois, mon entrée n'est pas une date valide pour le moment js, elle produit donc l'"Avertissement de dépréciation : la construction du moment revient à la date js". un message.
Je comprends pourquoi vous avez mis un avertissement de dépréciation pour le constructeur du moment, mais dans mon cas, je veux uniquement utiliser le moment pour la vérification. Ne devrait-il pas y avoir un moyen d'utiliser la fonctionnalité isValid() sans recevoir le message d'obsolescence. J'en ai besoin à cause de la journalisation que je dois gérer.
Meilleures salutations,
Stéphane.

Commentaire le plus utile

J'ai trouvé ce problème en cherchant sur Google une solution au même problème que @SVasilev. Je veux juste voir si une chaîne est analysable par Moment.js (ne connaissant pas le format à l'avance) sans générer d'avertissements de dépréciation. Ce serait merveilleux s'il y avait une fonction de classe au lieu d'une fonction d'instance, comme moment.isValid() qui renvoie simplement un booléen, plutôt que d'avoir à utiliser le constructeur en premier et à recevoir un avertissement de dépréciation.

Tous les 9 commentaires

Vous devez toujours fournir une ou plusieurs chaînes de format. Moment peut tester de manière fiable si une chaîne peut être analysée jusqu'à une date valide _dans un format particulier_, mais il ne peut pas tester de manière fiable si _n'importe quelle chaîne_ est une date.

Il y a plusieurs raisons à cela, telles que les différences de format des paramètres régionaux.

Le fait est que moment prend en charge certains formats par défaut. Donc, si vous voulez tester si une chaîne peut être analysée par moment hors de la boîte et que la chaîne n'est pas analysable - alors vous obtenez quelque chose d'imprimé dans la console et un objet moment avec la méthode .isValid(), ce qui est étrange et vous ne pouvez pas le contrôler. Il serait pratique d'avoir un moyen de supprimer au moins le dumping dans la console - tout reste le même.

meilleures salutations,
Georgi

Je pense que la proposition du #2469 couvrirait cela. Ensuite, vous pourriez faire moment(string, true).isValid() , et cela fonctionnerait pour tous les formats que ce moment prend en charge par défaut.

Merci,
Je suis content que vous ayez cherché plus loin. J'attends ta correction avec impatience :)
Stéphane

Merci pour la proposition Matt, ça a l'air bien.

meilleures salutations,
Georgi

J'ai trouvé ce problème en cherchant sur Google une solution au même problème que @SVasilev. Je veux juste voir si une chaîne est analysable par Moment.js (ne connaissant pas le format à l'avance) sans générer d'avertissements de dépréciation. Ce serait merveilleux s'il y avait une fonction de classe au lieu d'une fonction d'instance, comme moment.isValid() qui renvoie simplement un booléen, plutôt que d'avoir à utiliser le constructeur en premier et à recevoir un avertissement de dépréciation.

@odigity - un ou plusieurs formats auxquels vous pouvez vous attendre et vous ne recevrez pas d'avertissement de dépréciation. La vérification d'une chaîne qui pourrait être une date est cependant impossible, car avec des chaînes comme 01/02/03, on ne peut pas dire dans quel ordre se trouvent les champs.

De plus, veuillez ne pas commenter les anciens problèmes fermés pour demander de nouvelles fonctionnalités. Ouvrez simplement un nouveau numéro. Merci.

Pourquoi est-ce toujours un problème en 2019 ? Je ne devrais pas recevoir d'avertissement de dépréciation lorsque la chaîne fournie n'est pas valide si j'appelle .isValid(). Je lance volontairement des chaînes non valides lors du test unitaire d'une fonction et je veux qu'elle soit lancée sans que cet avertissement n'encombre mes journaux. Merci.

Une solution de contournement limitée que j'utilise pour le moment est if (!Boolean(Date.parse('invalid date'))) throw ..
J'aimerais utiliser if (!moment('invalid date').isValid) .. pour les cas du 30 février et autres.

Remarque : il ne s'agit pas d'une nouvelle demande de fonctionnalité, mais de la demande originale de @SVasilev

Ce problème est clos, je ne sais pas comment le rouvrir

Au moment où docs a en fait un exemple https://momentjs.com/docs/ qui produirait cet avertissement

moment("not a real date").isValid();

Je pense que cela doit être mis à jour au moins.

Cette page vous a été utile?
0 / 5 - 0 notes