时刻版本:2.0.0
After reading the docs ,我认为这很简单(Chrome控制台):
var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = startdate.add(moment.duration(2, 'hours'));
returned_endate == expected_enddate // false
returned_endate // Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
这是一个微不足道的例子,但我什至无法让它工作。我觉得我在这里错过了一些重要的东西,但我真的不明白。即使这样,这似乎也不起作用:
startdate.add(2, 'hours')
// Moment {_i: "2013-05-09T00:00:00Z", _f: "YYYY-MM-DDTHH:mm:ss Z", _l: undefined, _isUTC: false, _a: Array[7]…}
任何帮助将非常感激。
编辑:
我的最终目标是制作一个二进制状态图表,就像我在这里工作的那样:
http://bl.ocks.org/phobson/5872894
如您所见,我在解决此问题时目前正在使用虚拟 x 值。
最佳答案
我认为您错过了 .add()
文档中的一个关键点
您似乎将其视为返回不可变结果的函数。容易犯错。 :)
如果您使用返回值,则它与您开始使用的实际对象相同。它只是为了方便方法链接而返回。
您可以通过克隆时刻 as described here 来解决此行为。
此外,您不能仅使用 ==
进行测试。您可以将每个时刻格式化为相同的输出并进行比较,或者您可以只使用 .isSame()
方法。
您的代码现在是:
var timestring1 = "2013-05-09T00:00:00Z";
var timestring2 = "2013-05-09T02:00:00Z";
var startdate = moment(timestring1);
var expected_enddate = moment(timestring2);
var returned_endate = moment(startdate).add(2, 'hours'); // see the cloning?
returned_endate.isSame(expected_enddate) // true
关于javascript - 为片刻添加持续时间 (moment.js),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17333425/