Moment: Augmentation de l'erreur de conversion de la date Momemtjs.

Créé le 8 oct. 2016  ·  18Commentaires  ·  Source: moment/moment

Description du problème et étapes à reproduire :
console.log('>>>>>>.', moment(value).format('MM-DD-YYYY'),moment(value).format('YYYY-MM-DD'));

Je ne sais pas où cette erreur a été générée, impossible de suivre. J'avais ajouté un message d'avertissement.

Environnement:
Ubuntu, navigateur chromé.

PASSER EN DESSOUS DU PROBLÈME

Avertissement d'obsolescence : la valeur fournie n'est pas dans un format ISO reconnu. moment construction revient à js Date(), qui n'est pas fiable sur tous les navigateurs et toutes les versions. Les formats de date non ISO sont déconseillés et seront supprimés dans une prochaine version majeure. Veuillez vous référer à http://momentjs.com/guides/#/warnings/js -date/ pour plus d'informations.
Arguments:
[0] _isAMomentObject : vrai, _isUTC : faux, _useUTC : faux, _l : non défini, _i : 27/04/2016, _f : non défini, _strict : non défini, _locale : [object Object]
Erreur

Commentaire le plus utile

Faire moment(new Date("27/04/2016")).format.... semble fonctionner. Mais je pense qu'il y a des problèmes dans cette approche, peut-être liés aux paramètres régionaux, etc.

Tous les 18 commentaires

Ce message d'avertissement se produit lorsque vous créez un Moment à partir d'une chaîne qui n'est pas dans un format ISO 8601 pris en charge (voir http://momentjs.com/docs/#/parsing/string/ pour une liste des formats pris en charge).

Dans ce cas, il semble que vous ayez essayé d'analyser la chaîne 27/04/2016 , qui n'est pas au format ISO. Vous pouvez analyser ce format sans avertissement si vous indiquez à Moment quel est le format : moment("27/04/2016", "DD/MM/2016") . Vous pouvez également modifier le format de votre entrée pour qu'il corresponde à la spécification ISO : moment("2016-04-27")

Je ferme ce problème car ce n'est pas un bogue dans Moment, mais si vous avez encore des questions, veuillez me mentionner dans une réponse ici et j'essaierai de vous aider.

Je ne réussis pas lorsque je fais un format ISO 8601 pris en charge

Faire moment(new Date("27/04/2016")).format.... semble fonctionner. Mais je pense qu'il y a des problèmes dans cette approche, peut-être liés aux paramètres régionaux, etc.

@ziaulrehmandevsinc A travaillé pour moi. Merci.

@ziaulrehmandevsinc A également travaillé pour moi, merci

@ziaulrehmandevsinc Cela a également fonctionné pour moi. Merci beaucoup

A travaillé pour moi. Merci

Pour le moment, nous préférerions ne pas ajuster le code pour gérer ce problème. Dans moment.js où il affiche l'avertissement :

fonction avertir(msg) {
si (hooks.suppressDeprecationWarnings === faux &&
(typeof console !== 'undefined') && console.warn) {
console.warn('Avertissement d'obsolescence : ' + msg);
}

Comment définir "hooks.suppressDeprecationWarnings" ? J'ai examiné la fonction des crochets, mais il signale que les crochets ne sont pas une fonction. Utilisation d'aurélia.

Merci

@pdesimone

// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;

// See what else you can mess with
console.log(Object.keys(require('moment')));

Oui, je rencontre ce problème en utilisant moment('2018-01-20') qui, pour autant que je sache, est un format ISO 8601 valide.

À l'époque, je ne pouvais pas faire fonctionner les suppressDepreciationWarnings ou d'autres solutions.

J'ai fait cela dans toutes mes utilisations du moment :

moment(valeur, format), soit : Valeur : 2018-01-20, Format : AAAA-MM-JJ.

Ensuite, l'avertissement ne se produit pas. Apparemment, si vous laissez le moment "essayer" et déterminez le type de rendez-vous, vous obtenez l'avertissement...

@ziaulrehman40 a travaillé pour moi, merci beaucoup

Si vous pensez que vous gérez les choses correctement et que vous voyez toujours l'erreur, vérifiez que vos types d'entrée <input type="date" /> génèreront une erreur, mais <input type="text" /> fonctionne.

@pdesimone

// Suppress the warnings
const moment = require('moment');
moment.suppressDeprecationWarnings = true;

// See what else you can mess with
console.log(Object.keys(require('moment')));

Merci : Cela fonctionne bien, mais j'ai besoin de savoir si cela causera un problème lors de l'ajout de suppressdeprecationwarnings

Merci, @ziaulrehman40 - :kissing_heart:

Au lieu de supprimer les avertissements, convertissez l'objet date en chaîne ISO avant de le formater en utilisant moment

 const moment = require('moment');

const dateFormatString = "YYYY-MM-DD";

function formatDate(dateObject) {
    var formatted = moment(dateObject.**toISOString()**).format(dateFormatString);
    return formatted;
}
var d = new Date();
var fd = formatDate(d);

console.log(fd);

Testez-le sur Repl.it

J'ai aussi un problème avec ça.

console.log(moment(this.entities[i].created_at).isValid());
this.entities[i].created_at = moment(this.entities[i].created_at).format("DD-MM-YYYY HH:mm");

Le journal de la console renvoie true , mais j'obtiens le message d'erreur :

value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments: 
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 21-05-2020 19:43, _f: undefined, _strict: undefined, _locale: [object Object]

Un console.log à la date que je reçois renvoie 2020-05-21 19:43:58.099745+00 .
Aucune suggestion?

@kiocosta Désolé, vous rencontrez des problèmes. Vous devriez probablement analyser avec un format. https://momentjs.com/docs/#/parsing/string -format/ Cela pourrait aussi être une bonne question pour Stack Overflow .

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

Questions connexes

martinheidegger picture martinheidegger  ·  26Commentaires

SunnySnail picture SunnySnail  ·  54Commentaires

mau21mau picture mau21mau  ·  69Commentaires

ichernev picture ichernev  ·  163Commentaires

FGRibreau picture FGRibreau  ·  112Commentaires