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

How to add, increment native Time variables in JavaScript

如何在 Javascript 中动态和重复地添加时间(小时和分钟)以正确地自动递增日期对象,有时我会添加分钟,或者小时,或 HH & mm - 我想获得新的总时间并使其 return 正确 incre/decremented 有效 time/date 对象。

例如在添加 table rows/grids 中的所有小时时(提前不知道添加的 duration/time,我们不知道它是否只是添加分钟、小时和分钟或天数或增量或递减,查看 C# 调用,它正确处理时间数学)一些单元格有分钟,其他单元格有 HH:mm。 SO 上的 answers 不解决递增问题,或添加常数时间,或添加以前已知的时间片段 ,例如添加 30 分钟或不考虑动态时间,或移动向前或向后的日期(如果为负 time/deductions)。

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

例如,我该如何做 this/dynamically,并让 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

在其他语言中,java,C# 你可以只添加时间、日期、时间跨度,System.DateTime addDynamicTimeOrDuration = today.Add(duration); 其中持续时间可以输入 1hr:30 分钟,或 220 mins 等. 如何在 Javascript.

中做同样的事情

更新 1: 许多人建议我使用 momentjs duration,但是从 link momentjs does not have the function & this link it shows you cannot create duration from 2 datetime objects 通过减法或创建!


更新2:

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

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


我只是希望能够不时添加并从函数中获得正确答案(无论传入什么,即分钟、小时或天)。我觉得这应该是一个函数 easier/handled ,让它决定每个 datetime obj 中的内容,然后将它们加在一起。 (为什么这在 js 中这么难?而不是基础库的一部分。)

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

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

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

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

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