web-dev-qa-db-ja.com

瞬間jsにおける非推奨警告

指定された値が認識されているISO形式ではないというコードに対する警告が表示されるのを手伝ってください。そして私は今日関数をモーメント関数で変えていますがそれでもうまくいきません。

これが警告エラーです

非推奨警告:提供された値は認識されたISO形式ではありません。モーメント構築はjs Date()に頼ります。これはすべてのブラウザとバージョンで信頼できるわけではありません。 ISO以外の日付形式は推奨されておらず、今後のメジャーリリースで削除される予定です。詳細は http://momentjs.com/guides/#/warnings/js-date/ を参照してください。引数:[0] _isAMomentObject:true、_isUTC:true、_useUTC:true、_l:未定義、_i:2016-9-26 19:30、_f:未定義、_strict:未定義、_locale:[object Object]

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

        });
100
Jemai

彼らのすばらしいドキュメントをすべてチェックしてください。

ここで彼らは 警告メッセージ について議論します。

文字列+フォーマット

警告:文字列を解析するためのブラウザサポートは矛盾しています。どのフォーマットがサポートされるべきかについての仕様がないので、いくつかのブラウザで動作するものは他のブラウザで動作しません。

ISO 8601文字列以外のものを解析する一貫した結果を得るには、 String + Format を使用する必要があります。

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

文字列+フォーマット(複数フォーマット)

複数のフォーマットがある場合は、 String + Formats ( 's'付き)をチェックしてください。

入力文字列の正確なフォーマットがわからないが、それが多くのうちの1つである可能性があることがわかっている場合は、フォーマットの配列を使用できます。

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

より具体的なことについてはドキュメントをチェックしてください。

タイムゾーン

チェックアウト ゾーンでの解析 、タイムゾーンと同等のドキュメント。

Moment.tzコンストラクタは、momentコンストラクタとすべて同じ引数を取りますが、最後の引数をタイムゾーン識別子として使用します。

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

_編集_

//...
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);
}
//...
119
christo8989

これをすることは私のために働く:

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

私はlocalStorageから日付を引き渡そうとしていたので、このエラーに遭遇しました。日付を新しいDateオブジェクトに渡してから .toISOString() を呼び出すと、うまくいきました。

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

これにより、コンソールに警告が表示されなくなりました。

6
Shahzeb Khan

このようにあなたの機能に瞬間を使う

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

この答えはこの警告をもっとよく理解するためのものです

Timeオブジェクトvar today = moment();を作成するのにmomentを使用すると、非推奨警告が発生します。

この警告が問題ないのであれば、もっと簡単な方法があります。

dateからのjsオブジェクトを使用しないでください代わりにmomentを使用してください。たとえば、現在の日付を取得するにはmoment()を使用します。

あるいはjs dateオブジェクトをmoment dateに変換します。 js dateオブジェクトのフォーマットを指定するだけでそれを実行できます。

すなわちmoment("js date", "js date format");

例えば:

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

(ただし、このメソッドは使用しないでください。将来的にはmomentから使用されなくなる可能性があります)。

Moment.jsで文字列を解析します。

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