gpt4 book ai didi

javascript - 为片刻添加持续时间(moment.js)

转载 作者:IT王子 更新时间:2023-10-29 02:39:08 27 4
gpt4 key购买 nike

时刻版本: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() 文档中的一个关键点

Mutates the original moment by adding time.

您似乎将其视为返回不可变结果的函数。容易犯的错误。 :)

如果您使用返回值,它就是与您开始时相同的实际对象。它只是为了方便方法链接而返回。

您可以通过克隆时刻 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com