Borislav Hadzhiev
Sun Jan 16 2022·2 min read
Photo by Jannis Brandt
To round time to the nearest 15 minutes:
Math.round()
function.function roundToNearest15(date = new Date()) { const minutes = 15; const ms = 1000 * 60 * minutes; // 👇️ replace Math.round with Math.ceil to always round UP return new Date(Math.round(date.getTime() / ms) * ms); } // 👇️ Mon Jan 24 2022 09:00:00 (minutes are 7) console.log(roundToNearest15(new Date(2022, 0, 24, 9, 7, 00))); // 👇️ Mon Jan 24 2022 09:15:00 (minutes are 8) console.log(roundToNearest15(new Date(2022, 0, 24, 9, 8, 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 15 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 15
minutes.
The getTime method returns the number of milliseconds since the Unix Epoch.
We divide the result by the number of milliseconds in 15
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(4.49)); // 👉️ 4 console.log(Math.round(4.5)); // 👉️ 5
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 15
minutes, use the
Math.ceil
function instead.
function roundToNearest15(date = new Date()) { const minutes = 15; const ms = 1000 * 60 * minutes; return new Date(Math.ceil(date.getTime() / ms) * ms); } // 👇️ Mon Jan 24 2022 09:15:00 (minutes are 7) console.log(roundToNearest15(new Date(2022, 0, 24, 9, 7, 00))); // 👇️ Mon Jan 24 2022 09:15:00 (minutes are 8) console.log(roundToNearest15(new Date(2022, 0, 24, 9, 8, 00)));
The Math.ceil
function returns the smallest integer that is greater than or
equal to the provided number.
console.log(Math.ceil(4.1)); // 👉️ 5 console.log(Math.ceil(4.0001)); // 👉️ 5
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 15
minutes and pass the result to
the Date()
constructor.
The roundToNearest15
function returns a new Date
object with the minutes
rounded to the nearest 15
.