javascript - 如何计算给定时间之前的小时数
问题描述
我的问题是如何计算到达特定时间需要多少小时和分钟。我的意思是如果我们有时间: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?
解决方案
要获取到达一天中某个时间的小时和分钟,您应该执行以下步骤:
- 用当前日期创建一个日期对象
- 使用您要搜索的小时和分钟创建一个日期对象
- 获取两者的小时数之差(如果小于 0 则表示当天时间已过,请查找第二天)
- 获取两者之间的分钟差(如果它小于 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 分钟