Javascript momentjs覆盖今天的默认全局日期
我想为momentjs设置一个默认时间。例如,默认行为是:Javascript momentjs覆盖今天的默认全局日期,javascript,momentjs,Javascript,Momentjs,我想为momentjs设置一个默认时间。例如,默认行为是: moment().format('YYYY-MM-DD') // returns current date 我想做的是将当前日期改写为其他日期,即2017-03-01,因此每当我这样做时 moment().format('YYYY-MM-DD') >> "2017-07-31" 当调用构造函数而不带参数时(从技术上讲,它调用newdate(Date.now()),但结果是相同的),将自动初始化。你必须通过一些东西才能得到
moment().format('YYYY-MM-DD') // returns current date
我想做的是将当前日期改写为其他日期,即2017-03-01,因此每当我这样做时
moment().format('YYYY-MM-DD')
>> "2017-07-31"
当调用构造函数而不带参数时(从技术上讲,它调用newdate(Date.now())
,但结果是相同的),将自动初始化。你必须通过一些东西才能得到一个具体的日期
当然,您可以更改Moment.js库的本地副本,但不建议这样做。您必须使其与库的更高版本保持同步。如果让moment()
返回除当前日期以外的任何内容,则会让那些回头看代码的人想知道发生了什么
经过进一步研究,似乎Moment.js确实允许您覆盖
Moment.now()
的实现,该实现告诉库中的其他部分现在是什么时间。看见这里有一个例子:
moment.now = function () {
return +new Date();
}
可根据您的需要轻松更改:
moment.now = function () {
return +new Date(2017, 2, 1); // March 1st, 2017
}
出于上面第二段给出的原因,我强烈建议谨慎使用这种技术(如果有的话)。当调用构造函数而不带参数时(从技术上讲,它调用新日期(Date.now())
,但结果是一样的)。你必须通过一些东西才能得到一个具体的日期
当然,您可以更改Moment.js库的本地副本,但不建议这样做。您必须使其与库的更高版本保持同步。如果让moment()
返回除当前日期以外的任何内容,则会让那些回头看代码的人想知道发生了什么
经过进一步研究,似乎Moment.js确实允许您覆盖
Moment.now()
的实现,该实现告诉库中的其他部分现在是什么时间。看见这里有一个例子:
moment.now = function () {
return +new Date();
}
可根据您的需要轻松更改:
moment.now = function () {
return +new Date(2017, 2, 1); // March 1st, 2017
}
出于上面第二段给出的原因,我强烈建议谨慎使用此技巧。为什么不将日期传递到
时刻(…
)?进行所需的更改会违反MomentJS文档定义的合同<代码>力矩()现在应该返回。改变这一点是引入难以追踪的bug的一种极好的方式。以这种风险为代价,这会给你带来什么好处?IMO,即使你想要的是可能的,我认为这是一个很坏的想法。能够及时地设置日期,这是必要的,以防止在多个地方查找代码。你不能。当在没有参数的情况下调用构造函数时,函数将初始化自身。你必须传递一些东西才能获得一个特定的日期。然后你可以更好地使用一个方法来获取当前日期,而不是更改momentjs的行为。仍然需要在多个位置更新代码,我真的在寻找一些东西来覆盖默认行为(快速和肮脏是可以的,因为我只需要一个案例,而且只会使用大约一到两周)为什么不将日期传递到moment(…
)?进行所需的更改会破坏MomentJS文档定义的合同。moment()现在应该返回。改变这是一个引入一个难以追踪的bug的奇妙方法。这会给你带来什么样的风险?IMO,即使你想要的是可能的,我认为这是一个很坏的想法。能够及时地设置一个日期,这是必要的,以防止在多个地方查找代码。你不能。当构造函数在没有参数的情况下被调用时,你需要初始化它自己。你必须传递一些东西来获得一个特定的日期。这样你就可以更好地使用一个方法来获取当前日期,而不是改变momentjs的行为。仍然需要在多个地方更新代码,我真的在寻找一些东西来覆盖默认的behavior(快速和肮脏是好的,因为我需要一个单一的情况下,它将只用于约一个星期或两个)