计算小时之间的差异

时间:2017-10-20 19:31:27

标签: angular ionic-framework date-fns

我已经搜索了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

我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

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

在下面的代码段中,我创建了一个新日期,使用日期方法.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;
&#13;
&#13;

<强>参考文献:

  1. Set hours

答案 1 :(得分:0)

如果您有两个Date个对象,我觉得这很简单,可以减少Date.prototype.getTime的差异(所以不要使用dateFns格式化)

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

您也可以对其进行舍入,Math.round(minutes)

希望有所帮助:)