GeezerVison is showing github.com — deps: ICU tzdata needs update to 2026a for America/Vancouver (BC permanent DST) · Issue #62323 · nodejs/node
deps: ICU tzdata needs update to 2026a for America/Vancouver (BC permanent DST) #62323DescriptionVersion
v25.8.1
Platform
Linux wp10 6.17.0-19-generic #19-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 6 14:02:58 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
British Columbia adopted permanent DST effective November 1, 2026. Node.js currently has America/Vancouver falling back to PST (UTC-8) that day, which will be incorrect. You can verify the bug after November 1, 2026:
node -e "console.log(process.versions.tz)" // shows current tzdata version
node -e "console.log(new Intl.DateTimeFormat('en-CA', {
timeZone: 'America/Vancouver',
timeZoneName: 'short',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
// Expected on patched Node: 2026-11-01, 02:00 PDT
// Actual on unpatched Node: 2026-11-01, 01:00 PST ← wrong
Root cause: The bundled ICU tzdata predates IANA 2026a (released 2026-03-01), which includes the America/Vancouver rule change. Reference: eggert/tz@8b46071
Note also ICU 78.3 mentions updates to timezone data 2026a
Fix: Update deps/icu-small to include tzdata 2026a per the process documented in maintaining-icu.md.
Urgency: The detonation date is November 1, 2026, so there is time, but backports to LTS lines (v22.x, v24.x) will be needed.
How often does it reproduce? Is there a required condition?
Always reproducible, no required conditions
What is the expected behavior? Why is that the expected behavior?
$ node -e "console.log(process.versions.tz)"
2026a
$ node -e "console.log(new Intl.DateTimeFormat('en-CA', {
timeZone: 'America/Vancouver',
timeZoneName: 'short',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
2026-11-01, 02:00 a.m. MST
$
What do you see instead?
$ node -e "console.log(process.versions.tz)"
2025c
$ node -e "console.log(new Intl.DateTimeFormat('en-CA', {
timeZone: 'America/Vancouver',
timeZoneName: 'short',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
2026-11-01, 01:00 a.m. PST
$
Additional information
No response Activityrichardlau commented on Mar 18, 2026
Fix: Update deps/icu-small to include tzdata 2026a per the process documented in maintaining-icu.md.
This has already been done via #62164. It has yet to go out in a release.
Note also ICU 78.3 mentions updates to timezone data 2026a
I've run our updater workflow, which has picked up ICU 78.3 and opened #62324. This would have run at the weekend on the usual schedule for the workflow. Reacted by René Reacted by Michael J. Radwin albertyw commented on Mar 27, 2026 richardlau commented on Apr 23, 2026 More info
The 2026b release of the tz code and data is available. As Tim mentioned
yesterday[1], this release’s main impetus is British Columbia’s decision
to stop changing its clocks and stay on permanent UTC-07, which affects
BC’s UTC offsets starting 2026-11-01 at 02:00. Since this change will
likely cause problems downstream as CLDR’s latest release cannot handle
it, we’re pushing out this release now so that downstream has some time
to test and reprogram. Quite possibly we’ll need another release soon to
accommodate proposed changes in Alberta and Northwest Territories.
Our update scripts pull the tzdata from ICU so we'll need them to update first (we don't need an ICU release but the tzdata must be in their upstream repository) before we can update Node.js. Reacted by Michael J. Radwin richardlau commented on Apr 23, 2026 richardlau commented on Apr 23, 2026 We'll also need to watch out for the CLDR wrinkle, and whether that would prevent us being able to take the tzdata without a corresponding ICU update. mjradwin commented on May 11, 2026 Looks like this is fixed in Node 26
mradwin@w44:~$ node --version
v26.1.0
mradwin@w44:~$ node -e "console.log(process.versions.tz)"
2026b
mradwin@w44:~$ node -e "console.log(new Intl.DateTimeFormat('en-CA', {
timeZone: 'America/Vancouver',
timeZoneName: 'short',
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit'
}).format(new Date('2026-11-01T09:00:00Z')))"
2026-11-01, 02:00 a.m. PDT
mradwin@w44:~$
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|