时刻版本: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值。
答案 0 :(得分:219)
我认为你错过了.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
答案 1 :(得分:20)
我正在开发一个跟踪实时路线的应用程序。乘客想要显示驾驶员的当前位置以及到达他/她位置的预计到达时间。所以我需要在当前时间添加一些持续时间。
所以我发现下面提到的方法也是如此。 我们可以在当前时间添加任何持续时间(小时,分钟和秒):
var travelTime = moment().add(642, 'seconds').format('hh:mm A');// it will add 642 seconds in the current time and will give time in 03:35 PM format
var travelTime = moment().add(11, 'minutes').format('hh:mm A');// it will add 11 mins in the current time and will give time in 03:35 PM format; can use m or minutes
var travelTime = moment().add(2, 'hours').format('hh:mm A');// it will add 2 hours in the current time and will give time in 03:35 PM format
它符合我的要求。可能它可以帮助你。
答案 2 :(得分:3)
对于拥有startTime
(如12:30:30)和duration
(以分钟为单位的值,如120)的人,您可以像endTime
一样猜测:
const startTime = '12:30:00';
const durationInMinutes = '120';
const endTime = moment(startTime, 'HH:mm:ss').add(durationInMinutes, 'minutes').format('HH:mm');
// endTime is equal to "14:30"