momentjs覆盖今天的默认全局日期

时间:2017-07-31 18:04:10

标签: javascript momentjs

我想为momentjs设置默认时间。例如,默认行为是:

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

我想做的是将当前日期覆盖到其他日期,即2017-03-01,所以每当我这样做时

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

1 个答案:

答案 0 :(得分:1)

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
}

我强烈建议谨慎使用这种技术(如果有的话),原因可以在上面第二段中给出。