Time zone data is included in the Java runtime used with your instance. Depending on the version of the Java runtime, you may experience unexpected behavior based on changes in the time zone data release.
Changes to Time zones are managed by IANA, and changes normally occur because a government decides to change the application of daylight savings in their country. If these changes are made with short notice it is possible for the most recent Java release to not incorporate the last version of the IANA timezone database.
To see the default time zone tzdata in each Java runtime, see Timezone Data Versions in the JRE Software.
Example: America/Santiago Time Zone
The version of Java used by your instance may not include recent time zone changes. For example, if the system time zone is set to America/Santiago, the time zone tzdata release used with Java 1.6 causes the time zone to display as UTC/GMT-3 instead of UTC/GMT-4 during daylight saving time (DST).
This discrepancy in time zone is due to Chilean seasonal clock changes. In early 2015, Chile had planned to switch from seasonal DST to permanent DST. As a result, updated time zone rules were included in JRE releases 6u95, 7u80, 8u45 to account for this change. However, in March 2016, Chile reverted back from permanent DST to seasonal DST. As a result, instances using the affected JRE releases and with America/Santiago defined as the system time zone were off by one hour during daylight saving time.
Fix for America/Santiago
The JRE release tzdata2016c found in Java 1.8 solves this issue and accounts for seasonal DST in Chile. If you experience an issue similar to the above, contact ServiceNow Customer Support support to request the update.
Example: Brazilian Time Zones
Brazil is no longer observing daylight saving changes as of November 2019. This change is included in the IANA tzdata2019b timezone data and is included in Java 8u231, which was released in mid-October.
If the version of Java used by your instance is not currently on 8u231 then on the first Sunday in November 2019 the system time will shift by an hour.
To avoid that the steps in the workaround can be followed, but substituting the following depending on which Brazilian timezone is being used:
- Brazil/DeNoronha: Etc/GMT+2
- Brazil/East: Etc/GMT+3
- Brazil/West: Etc/GMT+4
- Brazil/Acre: Etc/GMT+5
If the instance timezone is set to an impacted value then you can set the system time zone to use the time zone format (GMT) instead of the Country/City format.
If the instance's system timezone is not set to an impacted timezone value, and only users on the instance who have a non-empty time_zone setting in their sys_user records are impacted, then only change those user's sys_user.time_zone values. If the instance's timezone is changed and the users with non-empty sys_user.time_zone values are not changed, then those users will continue to see a discrepancy in times.
The method in this workaround manually sets your instance to the correct time zone and will not adjust for daylight saving time. If the issue is that the timezone should now follow daylight savings when it didn't before then the timezone chosen would have to be changed when transitioning to/from daylight savings. If daylight savings are no longer being observed that the value would only have to be set once, unless the rules are then changed again at some point in the future.
To change the system timezone navigate to System Properties > System.
- Locate the property System timezone for all users unless overridden in the user's record [glide.sys.default.tz].
- Set the property to the desired time zone using the time zone format. For example, Etc/GMT+4.
- For available values, see database time zones.
While the above workaround uses a value specific for the Chilean time zone change, this approach can be used to work around any future similar issue by substituting the appropriate Etc/GMT timezone.
To change user timezones navigate to User Administration > Users.
- Add the "Time zone" field to the list if it is not present.
- Filter for "Active" = true and "Time zone" equal to the time zone name that needs to be changed.
- List Editing can be used to update the values for multiple users without needing to use a form. Alternatively, if a large number of users need to be updated then a fix script could be used, once it has been tested on a sub-production instance.
Note: The Etc/GMT timezones reverse the meaning of the +/- in the time zone value, with the + sign indicating a timezone that is west of 0 degrees longitude, for example, Etc/GMT+4 is the equivalent of UTC-4.
Note: The Etc/GMT time zone choices may be inactive in your instance. Navigate to System Definition > Choice Lists and filter for table = sys_user and element = time_zone. Set the inactive field to false for any of the Etc/GMT timezones which need to be used for the workaround.