javascript 如何通过添加分钟来创建新日期?

gtlvzcf8  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(134)

我试图执行一个简单的JavaScript逻辑,我们的业务希望在他们正在工作的情况下达到最后期限之前“冻结”时间。
例如:

Deadline: 04/07/2024 5:00 PM EST
Freeze Datetime: 04/04/2024 2:00 PM EST
Unfreeze Datetime: 04/05/2024 2:00 PM EST
New Deadline: 04/08/2024 5:00 PM EST (i.e., Unfreeze Datetime + Duration[Deadline-Freeze Datetime] )

以下是我到目前为止实现的逻辑:

let freezeStartDate = new Date(<< Getting from an Audit record>>);
let currentDeadline = new Date(<< Current Deadline Datetime>>);
let diffMs = currentDeadline - freezeStartDate;
let diffMins = Math.round(diffMs/60000);
console.log('diffMins: ' +diffMins);

let curDate = new Date(currentDateTime); //Passed down as an param
let newDeadline = new Date(curDate + diffMins);
console.log('newDeadline : ' +newDeadline ); //Getting same as curDate

我不确定我是否错过了一些额外的转换或格式。任何见解都是高度赞赏的。

2uluyalo

2uluyalo1#

给date对象添加分钟数,不能简单地直接给date对象添加分钟数,而是可以使用date对象的setMinutes()方法给date对象添加分钟数。
就像这样:

let newDeadline = new Date(curDate.getTime() + diffMs);
newDeadline.setMinutes(curDate.getMinutes() + diffMins);

如果需要使用不同的当前日期,可以将其传递给Date()构造函数,而不是使用new Date()

5sxhfpxr

5sxhfpxr2#

查看API参考。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
new Date(value)
value
一个整数值,表示自1970年1月1日00:00:00 UTC(ECMAScript历元,相当于UNIX历元)以来的毫秒数,忽略闰秒。请记住,大多数UNIX Timestamp函数仅精确到最近的秒。
在您的案例中:
let newDeadline = new Date(curDate[This is in millis] + diffMins[This is in minutes] );
您可以使用任何高阶日期库来处理复杂性,并允许您简单地.addMinutes并为您提供新的日期。
参考-https://stackoverflow.com/a/1214753/1193808
或者。
把所有的东西都转换成米利斯,然后把它们相加

相关问题