我试图执行一个简单的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
我不确定我是否错过了一些额外的转换或格式。任何见解都是高度赞赏的。
2条答案
按热度按时间2uluyalo1#
给date对象添加分钟数,不能简单地直接给date对象添加分钟数,而是可以使用date对象的
setMinutes()
方法给date对象添加分钟数。就像这样:
如果需要使用不同的当前日期,可以将其传递给
Date()
构造函数,而不是使用new Date()
。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
或者。
把所有的东西都转换成米利斯,然后把它们相加