计算小时之间的差异
Calculating difference between hours
我搜索过 SO 并找到了解决方案,但他们不使用 date-fns 或者根本不起作用,因为他们计算的是天数,而我只关注小时数天.
我正在尝试计算两个日期之间的差异,或者更具体地说,是同一天的小时数之间的差异,以便我可以了解某人何时上班和下班,并计算他们当天的工作小时数.
我正在使用 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
我做错了什么?
我认为如果你有两个 Date
对象,减去 Date.prototype.getTime
的差值真的很容易(所以不要用 dateFns 格式化)
var minutes = Math.abs(start.getTime() - end.getTime()) / 60000 // display in minutes
也可以四舍五入,Math.round(minutes)
希望对您有所帮助:)
正在进行不正确的解析,因为您只想获得 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>
参考文献:
- Set hours
我搜索过 SO 并找到了解决方案,但他们不使用 date-fns 或者根本不起作用,因为他们计算的是天数,而我只关注小时数天.
我正在尝试计算两个日期之间的差异,或者更具体地说,是同一天的小时数之间的差异,以便我可以了解某人何时上班和下班,并计算他们当天的工作小时数.
我正在使用 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
我做错了什么?
我认为如果你有两个 Date
对象,减去 Date.prototype.getTime
的差值真的很容易(所以不要用 dateFns 格式化)
var minutes = Math.abs(start.getTime() - end.getTime()) / 60000 // display in minutes
也可以四舍五入,Math.round(minutes)
希望对您有所帮助:)
正在进行不正确的解析,因为您只想获得 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>
参考文献:
- Set hours