2017-07-31 36 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 *。改變這是引入難以追蹤錯誤的奇妙方式。這樣做會以這種風險爲代價獲得什麼?國際海事組織,即使你想要的是可能的,我認爲這是一個非常糟糕的想法。 – Amy

+0

能夠及時設置日期,這是防止在多個地方進行代碼轉換所必需的。 – tadalendas

+0

你不能。在[MomentJS代碼調用'新的日期(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 
} 

我會強烈建議使用這種技術謹慎(如果有的話),在第二段落中給出的理由以上。