我已经搜索了SO并找到了解决方案,但是他们没有使用日期,或者只是不工作,因为他们正在计算日期和我的工作时间。 m只关注同一天的几个小时。
我试图计算两个日期之间的差异,或者更具体地说,是在同一天的几个小时之间计算差异,以便当有人进入并计时并计算当天工作的小时数时我可以得到
我正在使用date-fns
如果我运行console.log(this.myForm.value.startTime)
,我会14:00
。
如果我运行console.log(this.myForm.value.endTime)
,我会16:00
。
这是我计算小时数的功能。
updateHours() {
var end = dateFns.format(new Date(this.myForm.value.endTime, 'HH:mm'));
var start = dateFns.format(new Date(this.myForm.value.startTime, 'HH:mm'));
var result = dateFns.differenceInMinutes(
new Date(end),
new Date(start)
)
console.log(result);
}
result
的值始终为NaN
我做错了什么?
答案 0 :(得分:1)
正在进行不正确的解析,因为您只希望在minutes
中获得差异,因此更容易遵循此方法。
设置为end
和start
变量的值在原始代码中未定义。
在下面的代码段中,我创建了一个新日期,使用日期方法.setHours()
设置小时和分钟。
date.setHours(0, 0, 0); // Set hours, minutes and seconds
var start_time = "14:00";
var end_time = "16:00";
function updateHours() {
var current = new Date();
var start = current.setHours(start_time.split(":")[0], start_time.split(":")[1], 0);
var end = current.setHours(end_time.split(":")[0], end_time.split(":")[1], 0);
console.log(start, end)
var result = dateFns.differenceInMinutes(
end,
start
)
console.log(result);
}
updateHours();

.as-console {
height: 100%;
}
.as-console-wrapper {
max-height: 100% !important;
top: 0;
text-align:center;
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>
&#13;
<强>参考文献:强>
答案 1 :(得分:0)
如果您有两个Date
个对象,我觉得这很简单,可以减少Date.prototype.getTime
的差异(所以不要使用dateFns格式化)
var minutes = Math.abs(start.getTime() - end.getTime()) / 60000 // display in minutes
您也可以对其进行舍入,Math.round(minutes)
希望有所帮助:)