Date.prototype.setHours()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
ThesetHours() method ofDate instances changes the hours, minutes, seconds, and/or milliseconds for this date according to local time.
In this article
Try it
const event = new Date("August 19, 1975 23:15:30");event.setHours(20);console.log(event);// Expected output: "Tue Aug 19 1975 20:15:30 GMT+0200 (CEST)"// Note: your timezone may varyevent.setHours(20, 21, 22);console.log(event);// Expected output: "Tue Aug 19 1975 20:21:22 GMT+0200 (CEST)"Syntax
setHours(hoursValue)setHours(hoursValue, minutesValue)setHours(hoursValue, minutesValue, secondsValue)setHours(hoursValue, minutesValue, secondsValue, msValue)Parameters
hoursValueAn integer between 0 and 23 representing the hours.
minutesValueOptionalAn integer between 0 and 59 representing the minutes.
secondsValueOptionalAn integer between 0 and 59 representing the seconds. If you specify
secondsValue, you must also specifyminutesValue.msValueOptionalAn integer between 0 and 999 representing the milliseconds. If you specify
msValue, you must also specifyminutesValueandsecondsValue.
Return value
Changes theDate object in place, and returns its newtimestamp. If a parameter isNaN (or other values that getcoerced toNaN, such asundefined), the date is set toInvalid Date andNaN is returned.
Description
If you do not specify theminutesValue,secondsValue, andmsValue parameters, the same values as what are returned bygetMinutes(),getSeconds(), andgetMilliseconds() are used.
If a parameter you specify is outside of the expected range, other parameters and the date information in theDate object are updated accordingly. For example, if you specify 100 forsecondsValue, the minutes are incremented by 1 (minutesValue + 1), and 40 is used for seconds.
BecausesetHours() operates on the local time, crossing a Daylight Saving Time (DST) boundary may result in a different elapsed time than expected. For example, if setting the hours crosses a spring-forward transition (losing an hour), the difference in timestamps between the new and old date is one hour less than the nominal hour difference. Conversely, crossing a fall-back transition (gaining an hour) result in an extra hour. If you need to adjust the date by a fixed amount of time, consider usingsetUTCHours() orsetTime().
If the new local time falls within an offset transition, the exact time is derived using the same behavior asTemporal'sdisambiguation: "compatible" option. That is, if the local time corresponds to two instants, the earlier one is chosen; if the local time does not exist (there is a gap), we go forward by the gap duration.
Examples
>Using setHours()
const theBigDay = new Date();theBigDay.setHours(7);Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-date.prototype.sethours> |