2017-07-31 16 views
0

momentjsのデフォルト時間を設定したいと思います。たとえば、デフォルトの動作は次のとおりです。私がやりたいのは何momentjsは今日のデフォルトのグローバル日付を上書きします

moment().format('YYYY-MM-DD') // returns current date 

はすなわち、他のいくつかの日に2017年3月1日に現在の日付を上書きすることですので、私は

moment().format('YYYY-MM-DD') 
>> "2017-07-31" 
+5

「瞬間(...)」に日付を渡すのはなぜですか?希望の変更を行うと、MomentJSのドキュメントで定義されている契約が破られます。 'moment()'は* now *を返すことになっています。変更することは、バグを追跡するのに難しい方法を導入する素晴らしい方法です。そのようなリスクを犠牲にして、あなたは何を得るのですか? IMOは、あなたが望むものが可能であっても、それは非常に悪いアイデアと考えています。 – Amy

+0

複数の場所でコードをコード化しないようにするには、これを元に戻す必要があります。 – tadalendas

+0

できません。コンストラクタの呼び出し時に[MomentJSコードは 'new Date(NaN)'を呼び出す](https://github.com/moment/moment/blob/develop/src/lib/moment/constructor.js#L62)引数なし。あなたは特定の日付を得るために何かを渡す必要があります。 –

答えて

0

を行うたびMoment.js code calls new Date()は、コンストラクタが引数なしで呼び出されたときに自身を初期化します(技術的にはnew Date(Date.now())を呼び出しますが、結果は同じです)。あなたは特定の日付を得るために何かを渡す必要があります。

もちろん、Moment.jsライブラリのローカルコピーを変更することはできますが、これはお勧めできません。ライブラリのそれ以降のリリースでは、最新の状態に保つ必要があります。そして、moment()に現在の日付以外の何かを返すと、あなたのコードを見ている人は、何が起こっているのだろうか不思議に思うでしょう。さらなる調査の際


、Moment.jsはあなたがそれが何であるか、時間のライブラリの残りを告げるmoment.now()の実装を上書きすることはできないようです。 this article on the Moment.js website for moreを参照してください。

moment.now = function() { 
    return +new Date(); 
} 

あなたのニーズに合わせて変更するのは簡単だろう:そこに例があります

moment.now = function() { 
    return +new Date(2017, 2, 1); // March 1st, 2017 
} 

私は強く(すべてであれば)控えめにこの技術を使用することをお勧めし第二段落に与えられた理由のために上記。

関連する問題