The Infor CRM web client utilizes a couple of methods to determine and then present what timezones are available to be selected in the web client. The first thing that happens, in code on the base.master page is a method LoginName_load runs.
Using the Sage.Platform.dll, in the Sage.Platform.TimeZone class the current user’s timezone is retrieved. This is stored in the USERINFO.TIMEZONE field. This value matches the time zone name from the registry.
This value is then compared to the timezone of the current computer, also retrieved via the Sage.Platform.dll.
If the 2 values don’t match, then the users timezone is changed to the first timezone on the computer with a matching UTC offset. This is saved back to the USERINFO.TIMEZONE field. This all happens as the page loads.
Finally, in the Sage.Platform.dll the local registry is used to determine the time zones available. By looking in this location:
local machine/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones
, the various keys are read. This is serialized into a feed that is called through the slxdata handler at this address:
With this list, the client compares the offset of the timezone now stored in the USERINFO.TIMEZONE field and using the slxdata handler, creates a list of all timezones on the computer with a matching UTC offset. These are the timezones that are presented to the user when they attempt to change the timezone:
This list construction logic is contained in the massive minified Sage.js client side library.