Javascript 如果差异超过10分钟,则两次之间的取整持续时间

Javascript 如果差异超过10分钟,则两次之间的取整持续时间,javascript,node.js,Javascript,Node.js,我有两个日期,通常是开始时间和结束时间。我想计算时间之间的差异,如果分钟部分大于10分钟,则将小时部分四舍五入。例如: 相差12分钟-四舍五入至1小时 相差1小时31分钟-四舍五入至2小时 相差2小时4分钟-保持2小时 相差3小时59分钟-四舍五入至4小时 下面是我到目前为止能够实现的代码。我发现了两个日期之间的差异,并将其细分为3600000,然后将其四舍五入,但这类似于将1小时30分钟转换为2小时 var duration = Math.round(moment(end_time).d

我有两个日期,通常是开始时间和结束时间。我想计算时间之间的差异,如果分钟部分大于10分钟,则将小时部分四舍五入。例如:

  • 相差12分钟-四舍五入至1小时
  • 相差1小时31分钟-四舍五入至2小时
  • 相差2小时4分钟-保持2小时
  • 相差3小时59分钟-四舍五入至4小时
下面是我到目前为止能够实现的代码。我发现了两个日期之间的差异,并将其细分为3600000,然后将其四舍五入,但这类似于将1小时30分钟转换为2小时

 var duration = Math.round(moment(end_time).diff(moment(booking_result.start_time))  / 3600000);

有人能提出解决方案吗?

我看到您正在使用momenjs,那么您想做什么就很容易了:

var duration = moment.duration(end_time.diff(start_time));
var hours = duration.asHours();
这将为您提供以小时为单位的小数,正如我从您的问题中了解到的,您要做的是将其向上舍入到最接近的整数,但仅当此差值超过10分钟时。在分钟分量中,因此:

if (duration.minutes() > 10) {
    var result = Math.ceil(hours);
}

结束时间和预订结果。开始时间是什么格式?它们必须是ISO才能被矩()接受,否则您需要指定格式矩(end_time,'x'),它们是ISO格式的,我可以找到差异,您的意思是要将任何大于10分钟的差异取整到下一个小时吗?所以31分钟的差距是1小时,1小时12分钟是2小时,2小时3分钟还是2小时?@RobinMackenzie是的exactly@RobinMackenzie谢谢你的编辑!检查我的“按操作编辑”注释-他们只想在增量的分钟数部分大于10分钟时进行汇总。例如,2小时3分钟的持续时间为2小时,但2小时11分钟的持续时间为3小时。它只是有一个微小的变化var duration=时刻(结束时间)。diff(时刻(预订结果。开始时间));var countDuration=时刻持续时间(duration);var hours=countDuration.asHours();哦,那是因为你的约会变量不是瞬间。。。很乐意帮忙!