Borislav Hadzhiev
Sun Jan 16 2022·2 min read
Photo by Tim Mossholder
To round a date to the nearest 5 minutes:
Math.round()
function.function roundToNearest5(date = new Date()) { const minutes = 5; const ms = 1000 * 60 * minutes; // 👇️ replace Math.round with Math.ceil to always round UP return new Date(Math.round(date.getTime() / ms) * ms); } // 👇️ Sun Jan 16 2022 08:15:00 (minutes are 13) console.log(roundToNearest5(new Date(2022, 0, 16, 8, 13, 00))); // 👇️ Sun Jan 16 2022 08:10:00 (minutes are 12) console.log(roundToNearest5(new Date(2022, 0, 16, 8, 12, 00)));
We used the
Date()
constructor when logging the examples to the console. The parameters we passed
are: year
, month
(January = 0, February = 1, etc), day of month
, hours
,
minutes
, seconds
.
We created a reusable function that rounds a date to the nearest 5 minutes.
Date
object as a parameter or uses the current date and time if no parameter is provided.If you always want to round up, replace the Math.round()
function with
Math.ceil()
.
The ms
variable stores the number of milliseconds there are in 5
minutes.
The getTime method returns the number of milliseconds since the Unix Epoch.
We divide the result by the number of milliseconds in 5
minutes and round to
the nearest integer using the
Math.round
function.
Here are some examples of how Math.round
works.
console.log(Math.round(0.49)); // 👉️ 0 console.log(Math.round(0.5)); // 👉️ 1
The function rounds the number up or down to the nearest integer.
0.5
, it gets rounded to the next higher absolute value.If the number is positive and its fractional portion is less than 0.5
, it gets
rounded to the lower absolute value.
If you always want to round up to the next 5
minutes, use the
Math.ceil
function instead.
function roundToNearest5(date = new Date()) { const minutes = 5; const ms = 1000 * 60 * minutes; return new Date(Math.ceil(date.getTime() / ms) * ms); } // 👇️ Sun Jan 16 2022 08:15:00 (minutes are 13) console.log(roundToNearest5(new Date(2022, 0, 16, 8, 13, 00))); // 👇️ Sun Jan 16 2022 08:15:00 (minutes are 12) console.log(roundToNearest5(new Date(2022, 0, 16, 8, 12, 00)));
The Math.ceil
function returns the smallest integer that is greater than or
equal to the provided number.
console.log(Math.ceil(0.1)); // 👉️ 1 console.log(Math.ceil(5.0001)); // 👉️ 6
In short, if there is anything after the decimal, the number will get rounded to the next integer, otherwise the number is returned.
The last step is to multiply the value from calling Math.round
or Math.ceil
with the number of milliseconds there are in 5
minutes and pass the result to
the Date()
constructor.
The roundToNearest5
function returns a new Date
object with the minutes
rounded to the nearest 5
.