【问题标题】:How can I calculate hours before given time [duplicate]我如何计算给定时间之前的小时数[重复]
【发布时间】:2019-08-27 10:37:31
【问题描述】:

我的问题是如何计算到达特定时间需要多少小时和分钟。我的意思是,如果我们有时间: 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?

【问题讨论】:

  • 如果你在 JS 中有两个 Date 值,你可以从另一个中减去一个,这将产生它们之间的毫秒数。然后,您可以将其转换为您想要的任何基于时间的指标。
  • 两次之间相差多少小时和分钟两个日期之间的差。
  • @nickzoum 使用 Date 是一种简单的方法。您甚至在答案中使用了它。 Stackoverflow 不是免费的代码编写服务,也不是“如何” 教程服务,而复制本是一种入门方式。这个问题也可能因为“太宽泛”而被关闭
  • @nickzoum 然后找到更好的副本并编辑重复的链接。我向你保证其中有很多是存在的,这个问题由于几个原因而离题

标签: javascript


【解决方案1】:

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

  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 分钟

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多