javascript - 如何处理固定日期的突变?

标签 javascript momentjs

.add() moment.js 的方法

Mutates the original moment by adding time.

var now = moment([2015, 11, 29, 14]);
var tomorrow = now.add(1, 'd');
// now has changed

如果我有一个固定的“现在”时刻,我想稍后在我的程序中重复使用,那么正确的方法是什么?

我发现的最好的结构是这样的

var ref = [2015, 11, 29, 14];
var now = moment(ref);
var tomorrow = moment(ref).add(1, 'd');
var start = moment(ref).startOf('day'); // beginning of today
var end = moment(ref).add(1, 'd').endOf('day'); // end of tomorrow

但对我来说它看起来很笨拙。

最佳答案

From their docs :

Note: It should be noted that moments are mutable. Calling any of the manipulation methods will change the original moment.

If you want to create a copy and manipulate it, you should use moment#clone before manipulating the moment. More info on cloning.

var now = moment([2015, 11, 29, 14]);
var tomorrow = now.clone().add(1, 'd');
var start = now.clone().startOf('day'); // beginning of today
var end = now.clone().add(1, 'd').endOf('day'); // end of tomorrow

一个quick look at their code on Github显示他们所做的只是return new Moment(this),因此您可以通过执行new Moment(now)而不是now.clone来完成同样的事情() 如果您更清楚的话。我个人认为您应该使用您认为最清楚的任何方法。

关于javascript - 如何处理固定日期的突变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34520370/

相关文章:

javascript - 获取嵌套 iframe 尺寸的正确方法

javascript - angular-ui-router 嵌套 View 在使用直接 url 或刷新时页面未加载

javascript - 使用正则表达式比较数据

javascript - AngularJS 用户界面路由器 : how to resolve typical data globally for all routes?

javascript - Moment .isAfter 没有正确返回

javascript - 我如何在 moment.js 中执行每周警报/功能

javascript - css float 元素错误

javascript - 如何在momentjs中显示带有当月和上个月月份名称的动态日期?

javascript - 如何使用 moment 获取 UTC 持续时间?

javascript - 时刻时区 ("America/Los Angeles") 关闭 3 分钟