关于角度:计算小时之间的差异

Calculating difference between hours

我搜索了SO并找到了解决方案,但他们没有使用日期文件或只是不工作,因为他们计算天数,我只关注同一天的小时数。

我正在尝试计算两个日期之间的差异,或者更确切地说,是在同一天的几个小时之间进行计算,以便当有人进入并计时并计算当天工作的小时数时我可以得到。

我正在使用date-fns

如果我运行console.log(this.myForm.value.startTime),我得14:00

如果我运行console.log(this.myForm.value.endTime),我得16:00

这是我计算小时数的函数。

1
2
3
4
5
6
7
8
9
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

我究竟做错了什么?


正在进行不正确的解析,因为您只想在minutes中获得差异,因此更容易遵循此方法。

设置为endstart变量的值在原始代码中未定义。

在下面的代码片段中,我创建了一个新日期,使用日期方法.setHours()设置小时和分钟。

1
date.setHours(0, 0, 0);   // Set hours, minutes and seconds

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();
1
2
3
4
5
6
7
8
9
.as-console {
  height: 100%;
}

.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
  text-align:center;
}
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js">

参考文献:

  • 设定时间

  • 我认为如果你有两个Date对象,以获得差异减去Date.prototype.getTime(所以不要使用dateFns进行格式化),这真的很容易

    1
    var minutes = Math.abs(start.getTime() - end.getTime()) / 60000 // display in minutes

    你也可以围绕它,Math.round(minutes)

    希望能帮助到你 :)