迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

使用 JavaScript 将日期四舍五入到最近的小时

作者:迹忆客 最近更新:2022/12/04 浏览次数:

JavaScript 将日期四舍五入到最接近的小时:

  1. 使用 setMinutes() 方法将日期的分钟数设置为其当前分钟数 + 30。
  2. 使用 setMinutes() 方法将分、秒和毫秒设置为 0。
  3. 如果在日期上加上 30 分钟会转到下一个小时,则将小时向上取整,否则向下取整。
function roundToNearestHour(date) {
  date.setMinutes(date.getMinutes() + 30);
  date.setMinutes(0, 0, 0);

  return date;
}

// 👇️ Sun Jan 16 2022 14:00:00 (minutes are 30)
console.log(roundToNearestHour(new Date(2022, 0, 16, 13, 30, 00)));

// 👇️ Sun Jan 16 2022 13:00:00 (minutes are 29)
console.log(roundToNearestHour(new Date(2022, 0, 16, 13, 29, 00)));

JavaScript 将日期四舍五入到最近的小时

在将示例记录到控制台时,我们使用了 Date() 构造函数。我们传递的参数是:yearmonth(January = 0、February = 1 等)、day of monthhoursminutesseconds

我们创建了一个可重用的函数,将日期和时间四舍五入到最接近的小时。

setMinutes 方法设置日期对象的分钟数。

该方法采用以下 3 个参数:

  • minutesValue - 0 到 59 之间的整数,表示分钟。
  • secondsValue(可选)- 0 到 59 之间的整数,表示秒。
  • msValue(可选)- 一个介于 0 和 999 之间的数字,表示毫秒。

在我们第一次调用 setMinutes() 方法时,我们使用 getMinutes() 方法获取日期对象的分钟数,并将结果加 30。

如果在当前时间上加 30 分钟会使小时值增加 1,那么我们应该四舍五入到下一个最接近的小时。

另一方面,如果将时间增加 30 分钟不会增加小时,则时间为 29 分钟或更短,我们应该将分钟数向下舍入为 0。

JavaScript 中的 Date 对象会自动处理将日期和时间增加 30 分钟会滚动到下一个小时甚至可能是第二天的情况。

function roundToNearestHour(date) {
  date.setMinutes(date.getMinutes() + 30);
  date.setMinutes(0, 0, 0);

  return date;
}

// 👇️ Sun Jan 17 2022 00:00:00 (minutes are 30)
console.log(roundToNearestHour(new Date(2022, 0, 16, 23, 30, 00)));

在上面的示例中,我们将小时四舍五入,并且 Date() 对象会自动滚动到第二天,因为将小时四舍五入会更改日期。

在我们第二次调用 setMinutes() 方法时,我们将分、秒和毫秒设置为 0,以确保日期和时间对象指向整点,例如 08:00:00,而不是 08:00:30。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便