如何在JavaScript中添加,增加本机时间变量

问题描述 投票:3回答:1

如何在Javascript中动态地和重复地添加时间(小时和分钟)以正确地自动增加日期对象,有时我正在添加分钟,或小时,或HH&mm - 我想获得新的总时间并让它返回正确递增/递减有效时间/日期对象。

对于例如在表行/网格中添加所有小时数时(添加的持续时间/时间未提前知道,我们不知道它只是添加分钟,或小时和分钟或天或增加或减少,看看C#调用,它正确处理时间数学)一些细胞有分钟,其他细胞有HH:mm。 SO上的answers不会增加或增加恒定时间,或者添加先前已知的时间片段,例如添加30分钟或不考虑动态时间因素,或者向前或向后移动日期(如果是负时间/扣除)。

到目前为止,我一直在手动执行此操作,并且缺少许多用例,var newDateObj = new Date(oldDateObj.getTime() + diff*60000);

例如,我怎么能这样做/动态,并让newDateObj正确自动增加小时,或天等。

var newDateObj = (oldDateObj) + AddMinsTimeObj; // AddTimeObj is mins here
var newDateObj = (oldDateObj) + AddHoursTimeObj; // 2Hrs hours here
var newDateObj = (oldDateObj) + AddHoursMinsTimeObj; // Add 1:40 here
var newDateObj = (oldDateObj) + AddDaysHoursMinsTimeObj; // Add days hours mins

在其他langs,java,C#你可以添加时间,日期,时间跨度,System.DateTime addDynamicTimeOrDuration = today.Add(duration);持续时间可以在1hr:30分钟,或220 mins等。如何在Javascript中做同样的事情。


更新1:许多人建议我使用momentjs duration,但是从链接momentjs does not have the function&这个链接它通过减法或创建显示you cannot create duration from 2 datetime objects


UPDATE2:

我正在尝试这个......越来越近了

moment().add($this.val + moment().diff(date1, date1));


我只是希望能够增加时间并从函数中获得正确的答案(无论传递什么,即分钟,小时或天)。我觉得这应该更容易/由函数处理,并让它决定每个datetime obj里面的内容然后将它们加在一起。 (为什么在js中这么难?而不是基本库的一部分。)

javascript datetime momentjs timespan
1个回答
1
投票

使用Moment.js,您可以找到任意两个日期对象之间的差异(以毫秒为单位)。

let birthday = moment([1978,7,12]);
let ageInMs = moment().diff(birthday);

这将为您提供这两个Moment对象之间的毫秒数。您不需要知道在一些Moment数学中包含多少秒,分钟,小时或天。

let doubleMyAge = moment().add(ageInMs, 'ms');

结果将是一个Moment对象,这是我未来的当前年龄,即从现在起很长一段时间。

© www.soinside.com 2019 - 2024. All rights reserved.