使用 JavaScript 将日期四舍五入到最近的小时
JavaScript 将日期四舍五入到最接近的小时:
- 使用 setMinutes() 方法将日期的分钟数设置为其当前分钟数 + 30。
- 使用 setMinutes() 方法将分、秒和毫秒设置为 0。
- 如果在日期上加上 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)));
在将示例记录到控制台时,我们使用了 Date() 构造函数。我们传递的参数是:year、month(January = 0、February = 1 等)、day of month 、hours 、minutes 、seconds。
我们创建了一个可重用的函数,将日期和时间四舍五入到最接近的小时。
setMinutes 方法设置日期对象的分钟数。
该方法采用以下 3 个参数:
- minutesValue – 0 到 59 之间的整数,表示分钟。
- secondsValue(可选)- 0 到 59 之间的整数,表示秒。
- msValue(可选)- 一个介于 0 和 999 之间的数字,表示毫秒。
在我们第一次调用 setMinutes() 方法时,我们使用 getMinutes() 方法获取日期对象的分钟数,并将结果加 30。
另一方面,如果将时间增加 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)));
在我们第二次调用 setMinutes() 方法时,我们将分、秒和毫秒设置为 0,以确保日期和时间对象指向整点,例如 08:00:00,而不是 08:00:30。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。