web-dev-qa-db-fra.com

Deprecation warning dans le moment js

J'ai besoin d'aide. Je reçois un avertissement sur mon code dont la valeur fournie n'est pas au format ISO reconnu. et je change ma variable aujourd'hui avec la fonction moment et cela ne fonctionne toujours pas.

Voici l'erreur d'avertissement

Avertissement de déprécation: la valeur fournie n’est pas dans un format ISO reconnu. La construction de moment 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: true, _isUTC: true, _useUTC: true, _l: undefined, _i: 2016-9-26 19:30, _f: undefined, _strict: undefined, _locale: [objet Objet]

 var entryDate = new Date();
 var currentDate = entryDate.getDate();

        function between(x,min,max) { 
            return x.valueOf() >= min.valueOf() && x < max.valueOf();
        };

        $("#custom1").change(function(){
            if ($("#custom1 :selected").val() == "AU" ) {
                var keyword = "";

                var aus1_s = moment.tz('2016-9-26 19:30', 'Australia/Sydney');              
                var aus2_s = moment.tz('2016-10-2 19:30', 'Australia/Sydney');              
                var aus3_s = moment.tz('2016-10-9 19:30', 'Australia/Sydney');                  
                var aus4_s = moment.tz('2016-10-16 19:30', 'Australia/Sydney');                 
                var aus5_s = moment.tz('2016-10-23 19:30', 'Australia/Sydney');
                var aus6_s = moment.tz('2016-10-30 19:30', 'Australia/Sydney');
                var aus6_e = moment.tz('2016-11-5 19:30', 'Australia/Sydney');
            } 

            else if ($("#custom1 :selected").val() == "NZ" ) {
                var aus1_s =  moment.tz('2016-9-28 20:30', 'Pacific/Auckland');
                var aus2_s =  moment.tz('2016-10-4 20:30', 'Pacific/Auckland');
                var aus3_s =  moment.tz('2016-10-11 20:30', 'Pacific/Auckland');
                var aus4_s =  moment.tz('2016-10-18 20:30', 'Pacific/Auckland');
                var aus5_s =  moment.tz('2016-10-25 20:30', 'Pacific/Auckland');
                var aus6_s =  moment.tz('2016-11-2 20:30', 'Pacific/Auckland');
                var aus6_e =  moment.tz('2016-11-9 20:30', 'Pacific/Auckland');
            }

            else {
                $("#entryEquals").val("");
                return false;
            }

           var today = moment();

            switch (true) {
                case between (today, aus1_s, aus2_s):
                keyword = "RElYT04=";
                break;

                case between (today, aus2_s, aus3_s):
                keyword = "QlJJREU=";
                break;

                case between (today, aus3_s, aus4_s):
                keyword = "U1lETkVZ";
                break;

                case between (today, aus4_s, aus5_s):
                keyword = "R1JPT00=";
                break;

                case between (today, aus5_s, aus6_s):
                keyword = "V0VERElORw==";
                break;

                case between (today, aus6_s, aus6_e):
                keyword = "VExD";
                break;

                default:
                $("#entryEquals").val("");
                break;
            }

        $("#entryEquals").val(keyword);

        });
118
Jemai

Découvrez toute leur documentation géniale!

Voici où ils discutent du Message d'avertissement .

Chaîne + Format

Avertissement: la prise en charge du navigateur pour l'analyse des chaînes est incohérente. Comme il n’existe aucune spécification sur les formats à prendre en charge, ce qui fonctionne dans certains navigateurs ne fonctionnera pas dans d’autres.

Pour obtenir des résultats cohérents lors de l'analyse d'éléments autres que les chaînes ISO 8601, vous devez utiliser String + Format .

moment("12-25-1995", "MM-DD-YYYY");

Chaîne + Formats (formats multiples)

Si vous avez plus d'un format, vérifiez leur Chaîne + Formats (avec un 's').

Si vous ne connaissez pas le format exact d'une chaîne d'entrée, mais que vous savez qu'il peut s'agir d'une chaîne parmi d'autres, vous pouvez utiliser un tableau de formats.

moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

Veuillez vérifier la documentation pour quelque chose de plus spécifique.

Fuseau horaire

Checkout Parsing in Zone , la documentation équivalente pour les fuseaux horaires.

Le constructeur moment.tz utilise les mêmes arguments que le constructeur moment, mais utilise le dernier argument comme identifiant de fuseau horaire.

var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");

EDIT

//...
var dateFormat = "YYYY-M-D H:m"; //<-------- This part will get rid of the warning.
var aus1_s, aus2_s, aus3_s, aus4_s, aus5_s, aus6_s, aus6_e;
if ($("#custom1 :selected").val() == "AU" ) {
    var region = 'Australia/Sydney';

    aus1_s = moment.tz('2016-9-26 19:30', dateFormat, region);              
    aus2_s = moment.tz('2016-10-2 19:30', dateFormat, region);              
    aus3_s = moment.tz('2016-10-9 19:30', dateFormat, region);                  
    aus4_s = moment.tz('2016-10-16 19:30', dateFormat, region);                 
    aus5_s = moment.tz('2016-10-23 19:30', dateFormat, region);
    aus6_s = moment.tz('2016-10-30 19:30', dateFormat, region);
    aus6_e = moment.tz('2016-11-5 19:30', dateFormat, region);
} else if ($("#custom1 :selected").val() == "NZ" ) {
    var region = 'Pacific/Auckland';

    aus1_s =  moment.tz('2016-9-28 20:30', dateFormat, region);
    aus2_s =  moment.tz('2016-10-4 20:30', dateFormat, region);
    aus3_s =  moment.tz('2016-10-11 20:30', dateFormat, region);
    aus4_s =  moment.tz('2016-10-18 20:30', dateFormat, region);
    aus5_s =  moment.tz('2016-10-25 20:30', dateFormat, region);
    aus6_s =  moment.tz('2016-11-2 20:30', dateFormat, region);
    aus6_e =  moment.tz('2016-11-9 20:30', dateFormat, region);
}
//...
135
christo8989

Cela fonctionne pour moi:

moment(new Date("27/04/2016")).format
24
Jigar Bhatt

J'ai rencontré cette erreur parce que j'essayais de transmettre une date de localStorage. Transmettre la date dans un nouvel objet Date, puis appeler . ToISOString () a fait le tour pour moi:

const dateFromStorage = localStorage.getItem('someDate');
const date = new Date(dateFromStorage);
const momentDate = moment(date.toISOString());

Ceci a supprimé tous les avertissements dans la console.

8
Shahzeb Khan

Cette réponse permet de mieux comprendre cet avertissement

Un avertissement obsolète est généré lorsque vous utilisez moment pour créer un objet temporel, var today = moment();.

Si cet avertissement vous convient, alors j'ai une méthode plus simple.

N'utilisez pas l'objet date de js, utilisez plutôt moment. Par exemple, utilisez moment() pour obtenir la date du jour.

Ou bien, convertissez l'objet js date en moment date. Vous pouvez simplement faire cela en spécifiant le format de votre objet date js.

c'est-à-dire moment("js date", "js date format");

par exemple:

moment("2014 04 25", "YYYY MM DD");

(MAIS VOUS NE POUVEZ UTILISER CETTE MÉTHODE QU'ELLE SOIT DÉPRÉCIÉE, cela peut être amorti de moment à l'avenir)

5

utiliser le moment dans votre fonction comme ça

 moment(new Date(date)).format('MM/DD/YYYY')
5
MD. ABU TALHA

Analyse de chaîne avec moment.js.

const date = '1231231231231' //Example String date
const parsed = moment(+date);
2