Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As discussed in #2 and nodejs/node#20026, It is possible to listen for system timezone changes and automatically reset the cache upon these events (although the lack of standard api's make it a bit cumbersome). This PR adds listeners for timezone change events on windows, osx and unix, as well as a method to register a hook. I'm really not sure if this should be a separate node module, a new version of your module (since node might start resetting the cache on its own in the future), a Node.js feature or maybe even a libuv handle (libuv/libuv#1176).
The following code can be used to test the response to system events:
On unix the
/etc/localtime
,/etc/timezone
and/etc/TZ
files are monitored (this apparently has the broadest support), and on windows theHKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
registry key is monitored. The monitoring happens using inotify, fsevents and RegNotifyChangeKeyValue, so there are no active or resource-intensive tasks continuously running.Tested on windows, osx and linux :)