Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: formatInTimeZone around DST change #285

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

yangchristina
Copy link

@yangchristina yangchristina commented May 12, 2024

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.

@yangchristina yangchristina marked this pull request as ready for review May 12, 2024 23:35
@jounii
Copy link

jounii commented Jun 12, 2024

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
Copy link

jounii commented Jun 12, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants