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

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

Round a Date to the Nearest Hour using JavaScript

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

  1. 使用该setMinutes()方法将日期的分钟数设置为其当前分钟数 + 30
  2. 使用setMinutes()方法设置分秒毫秒为
    0.
  3. 如果向30日期添加分钟会滚动到下一个小时,则将小时向上舍入,否则向下舍入。
索引.js
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)));


在将示例记录到控制台时,
我们使用了
Date()构造函数。我们传递的参数是:year, month(January = 0, February = 1, etc), day of month, hours,
minutes, seconds

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

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

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

  1. minutesValue0– 一个介于和之间的整数59,表示分钟数。
  2. secondsValue(可选)- 和之间的整数059表示秒数。
  3. msValue(可选)- 和之间的数字0999代表毫秒。

In our first call to the setMinutes() method, we used the
getMinutes()
method to get the minutes of the date object and added 30 to the result.

If adding 30 minutes to the current time increments the hour value by 1, then we should round up to the next nearest hour.

On the other hand, if adding 30 minutes to the time does not increment the
hour, then the time is at 29 minutes or less and we should round the minutes
down to 0.

The Date object in JavaScript automatically handles the scenario where
adding 30 minutes to a date and time rolls over to the next hour and possibly
to the next day.

index.js
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(),我们将minutes,seconds
和设置
milliseconds0, 以确保日期和时间对象指向一个圆小时,例如08:00:00, 而不是08:00:30