首页 > 解决方案 > 如何计算给定时间之前的小时数

问题描述

我的问题是如何计算到达特定时间需要多少小时和分钟。我的意思是如果我们有时间:15:32,我想计算到 05:32(晚上)需要多少小时,在这种情况下应该是 14 小时 32 分钟。

因为我真的没有那么多的知识和经验,所以我没有尝试过任何事情,因为我真的不知道从哪里开始。

const curDate = new Date().toLocaleTimeString();
console.log(curDate);

//I only know how to get the current date to string. But what next?

标签: javascript

解决方案


要获取到达一天中某个时间的小时和分钟,您应该执行以下步骤:

  1. 用当前日期创建一个日期对象
  2. 使用您要搜索的小时和分钟创建一个日期对象
  3. 获取两者的小时数之差(如果小于 0 则表示当天时间已过,请查找第二天)
  4. 获取两者之间的分钟差(如果它小于 0 则表示分钟已过,因此检查下一个小时)

由于您从另一个日期减去一个日期,因此您不需要进行任何转换(本地 => UTC)

const curDate = new Date(); // Step 1
const night = new Date(0, 0, 0, 5, 32); // Step 2
var hours = night.getHours() - curDate.getHours(); // Step 3a
if (hours < 0) hours += 24; // Step 3b
var minutes = night.getMinutes() - curDate.getMinutes(); // Step 4a
if (minutes < 0) { // Step 4b
  hours -= 1;
  minutes += 60;
}
console.log(["Hours: ", hours, ", Minutes: ", minutes].join(""));

这是一个帮助您理解第 4 步的示例:

  • 08:54 - 07:56
  • 08 - 07 小时,54 - 56 分钟
  • 1 小时 -2 分钟
  • 1 小时 -1 小时 => -2 分钟 + 60 分钟
  • 0 小时 58 分钟

推荐阅读