marnusw / date-fns-tz

Complementary library for date-fns v2 adding IANA time zone support
MIT License
1.01k stars 112 forks source link

fix: formatInTimeZone around DST change #285

Open yangchristina opened 1 month ago

yangchristina commented 1 month ago

Fixes #252 Fixes #258

Not sure if you'd want to use this since it involves another peer dependency (@date-fns/utc)

Replaces toZonedTime in formatInTimeZone with UTCDate, to prevent output from being affected by daylight savings happening in system timezone.

jounii commented 3 weeks ago

Unfortunately I came across the bug(s) that this should fix. I'll see if I can fix it otherwise for now, only way I found that would fix (without additional code or patches) is to force the NodeJS environment always to run in UTC timezone as this disables the DST logic in JS. Then make sure the dates are properly converted to local timezone for places that are needed.

jounii commented 3 weeks ago

After testing and debugging. I just cannot get it working correctly. If you wish to use these formatters without DST issues, you have run in UTC timezone. For the formatting now had small workaround by doing it manually from the date to continue.

It is unfortunate and the time zones are pretty much solid in MomentJS. The native JS date and Intl and other parts are quite a mess even if trying to do all the correct tricks or offset adjustments. Best just to put your NodeJS process into TZ=UTC timezone and work from there.