2017-07-31 35 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 
} 

我会强烈建议使用这种技术谨慎(如果有的话),在第二段落中给出的理由以上。