This feature is not Baseline because it does not work in some of the most widely-used browsers.
The second accessor property of Temporal.ZonedDateTime instances returns an integer from 0 to 59 representing the second component of this time.
The set accessor of second is undefined. You cannot change this property directly. Use the with() method to create a new Temporal.ZonedDateTime object with the desired new value.
For general information and more examples, see Temporal.PlainTime.prototype.second.
For ZonedDateTime, second can be non-continuous due to offset changes. While much rarer than hour or minute changes (because daylight saving time shifts are usually by whole hours), it can still happen.
const dt = Temporal.ZonedDateTime.from( "2021-07-01T12:34:56.123456789-04:00[America/New_York]", ); console.log(dt.second); // 56
Typically, second always goes from 0 to 59 and then back to 0, even when passing through a daylight saving time transition. There's a peculiar case where the second can be non-continuous: the standardization of hourly time zones. In the early 20th century, most countries were using their own time zones which were often not a whole hour offset from UTC. For example, Paris used to have an offset of UTC+0:09:21, which was changed to UTC+0 on March 11, 1911.
const dt = Temporal.ZonedDateTime.from(
"1911-03-10T23:59:59+00:09:21[Europe/Paris]",
);
console.log(dt.second); // 59
const dt2 = dt.add({ seconds: 1 });
console.log(dt2.second); // 39
console.log(dt2.toString()); // 1911-03-10T23:50:39+00:00[Europe/Paris]
For this reason, you should always prefer add() and subtract() to manipulate dates and times, rather than directly changing the second property.
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
second |
144 | 144 | 139 | No | No | 144 | 139 | No | No | No | 144 | No | ? | 1.40 | No |
Temporal.ZonedDateTimeTemporal.ZonedDateTime.prototype.with()Temporal.ZonedDateTime.prototype.add()Temporal.ZonedDateTime.prototype.subtract()Temporal.ZonedDateTime.prototype.millisecondTemporal.ZonedDateTime.prototype.microsecondTemporal.ZonedDateTime.prototype.nanosecondTemporal.PlainTime.prototype.second
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/second