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