Additional source to guess the local timezone ID on linux
David Holmes
david.holmes at oracle.com
Mon Aug 26 01:59:38 UTC 2013
On 24/08/2013 7:09 AM, Omair Majid wrote:
> Hi,
>
> The algorithm that OpenJDK uses to guess the local timezone ID on Linux
> goes like this:
>
> 1. If TZ environment variable is set, use that
> 2. If /etc/timezone is readable, read the time zone from there
> 3. If /etc/localtime is a symlink, resolve that, and use the name to
> guess the time zone.
> 4. Scan /usr/share/zoneinfo for a file whose contents match the contents
> of /etc/localtime.
>
> Step 4 (if it is ever reached) is probably going to lead to incorrect
> results since there are a number of timezones that have the same
> zoneinfo data (such as Europe/London and Europe/Belfast). So it seems
> sensible to me to try and use additional sources to guess the timezone
> ID before resorting to file content comparisons.
>
> The webrev adds a step between 2 and 3 that reads and parses
> /etc/sysconfig/clock to extract the timezone:
>
> http://cr.openjdk.java.net/~omajid/webrevs/timezone-read-sysconfig-clock/00/
>
> This file exists on some Red Hat Enterprise Linux (and derivative)
> distributions and contains contents that look this:
>
>> # The time zone of the system is defined by the contents of /etc/localtime.
>> # This file is only for evaluation by system-config-date, do not rely on its
>> # contents elsewhere.
>> ZONE="Europe/Zurich"
Surely the implication here is that if this file exists and has this
data then /etc/localtime should be correctly configured - hence we
should use that. ie at best this should come after step 3 not before it.
But even then when someone writes "do not rely on its
contents elsewhere" I'm inclined to do what they suggest!
David
> With this, we should be able to identify the exact timezone ID.
>
> Thanks,
> Omair
>
More information about the core-libs-dev
mailing list