moment.js 添加不添加时间

Rai*_*aif 12 javascript time add momentjs

当我做

- - 编辑 - -

var someMoment = moment('6:30 PM', ["h:mm A"]);
Run Code Online (Sandbox Code Playgroud)

----结束编辑----

someMoment.add(30, 'minutes')  
Run Code Online (Sandbox Code Playgroud)

我似乎没有得到任何结果。

console.log(start); -- Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
console.log(start.add(inc, 'minutes')); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
Run Code Online (Sandbox Code Playgroud)

文档说 add 会改变指定的时刻,所以上面的应该可以工作,但我也试过

var end = start.add(inc, 'minutes')
console.log(end); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
Run Code Online (Sandbox Code Playgroud)

我能做的就是这个

console.log(start.add(inc, 'minutes').format("h:mm A")); --7:00 PM
Run Code Online (Sandbox Code Playgroud)

我想要的是花一点时间,再加上 30 分钟,最好有一个提前 30 分钟的新时刻,或者至少让初始时刻提前 30 分钟。

我知道我可以把格式拿出来放在一个新的时刻,我想我会的,但这似乎有点坏了。

- - 编辑 - -

使用时刻 2.1

我从我的应用程序中的一个方法中获取它,我没有在 jsfiddle 或任何东西中隔离它,但是该方法需要一个字符串和一个增量。我想我会把它贴在这里

在这里,我正在尝试一种方法,但我也尝试过使用修改后的开始并克隆开始

var timeIsBetweenStartInc = function(_target:string, _start:string, inc:int){
var target = moment(_target, ["h:mm A"]);
var start = moment(_start, ["h:mm A"]);
console.log(start);
var end = moment(start).add(inc, 'minutes');
console.log(end);

return target.isBetween(start, end, 'minutes', '[)');(target, start, end);
};
Run Code Online (Sandbox Code Playgroud)

----结束编辑----

Ger*_*rtG 13

我怀疑 Moment.js 的工作方式也完全符合您的预期,但 console.log 不是。它打印对对象的引用,因此您看到的状态是咨询时的当前状态,而不是调用 log() 时的状态。尝试使用 console.dir() 来查看不同之处。或者使用 JSON.stringify() 获取对象的字符串表示,或者在 Moment 对象上调用 format()。


小智 4

Moment.js 有一个clone方法,您可以像这样使用:

var now = moment(),
    future = now.clone();
Run Code Online (Sandbox Code Playgroud)

然后你可以为克隆时刻添加一些时间:

future.add(30, "minutes");
Run Code Online (Sandbox Code Playgroud)

现在,如果您比较这两个时刻的 UNIX 时间戳......

future.unix() - now.unix();
Run Code Online (Sandbox Code Playgroud)

您会注意到它们相隔 1800 秒 = 30 分钟。