Timezone


In g5 database, "legal time" means "the time that can be read on the birth certificate".
Abbreviations used in this page:
  • LT = legal time
  • TZO = timezone offset
  • UT = universal time

Timezone computation

The purpose is to identify persons born during wars for example, cases needing humans to find the correct timezone offet.
Current problem is to build rules from 3 sources:
OL Olson database
FG "Problèmes de l'heure résolus pour le monde entier" (Françoise Gauquelin, Guy Trédaniel éditeur), 1991
THM "Traité de l'heure dans le monde", (Gabriel, Guy Trédaniel éditeur), 5th edition, 1990
There are contradiction between FG and THM.

Olson database

IANA Time Zone Database aka Olson database is the reference timezone data used by most programming languages.
For each country, it provides timezones = list of couples (date, timezone offset).
At a given date, there is one offset for the whole country, this doesn't handle war periods when one country is split in different timezone regimes.
In g5 code, limit dates given by Olson are used as departure values for the code, then conflicts between FG and THM are attached to a Olson date.

Format used in g5

In g5 database, dates are stored using 2 distinct fields :
  • One field to store date and time if present.
    It respects ISO 8601 format and can be one of :
    • YYYY-MM-DD HH:MM:SS if time is known with precision of a second - ex: 1982-08-23 23:31:20
    • YYYY-MM-DD HH:MM if time is known with precision of a minute - ex: 1928-11-13 22:15
    • YYYY-MM-DD if time is not known - ex: 1928-03-28
  • One field to store timezone offset.
    The format can be :
    • sHH:MM when precision of a minute is sufficient - ex: +01:00 or -01:00
    • sHH:MM:SS when precision of a second is needed - ex: +00:23:15 or -08:12:44
    (s stands for "sign", plus or minus)
ISO 8601 also permits to express both time and timezone offset in a single string, for example 1928-11-13 22:15+01:00

Expressing timezone offset

Using the vocabulary of CSV files generated from the database,
DATE-UT + TZO = DATE
A surprising feature of historical data is that historical notation does not respect the ISO 8601 definition of timezone offset.
The opposite value is always indicated.
This can be observed in Arno Müller files, in Cura web site and in both books FG and THM.

For example, for Brigitte Bardot, born 1934-09-28, Müller and both books indicate an offset of -1h.
Using the ISO 8601 definition,the offset for this date is +01:00
G5 program uses ISO 8601 definition
Meaning for historical usage
LT + TZO = UT
If LT is known, add the TZO to obtain UT
Meaning for ISO 8601 and g5
UT + TZO = LT
if UT is known, add TZO to obtain LT

This is equivalent to
UT = LT - TZO
If LT is known, substract the TZO to obtain UT
Example : the first record of file D10 : Aaron Harold, born 1921-06-21 07:00
Cura gives TZO = 6h
g5 gives TZO = -06:00

To find UT :
From Cura value : UT = 07:00 + 6h = 13:00
From g5 value : UT = 07:00 - (-6h) = 13:00

The results are equivalent.
This is not a blocking problem as it's finally just a matter of convention.

Timezone offset computation

This is a delicate and important problem.
Important because TZO is necessary to compute a chart, and delicate because information sources are sometimes contradictory.
The reference is the "Olson database", used by operating systems and programming languages (https://www.iana.org/time-zones).
This handles simple cases when the offset is defined for a whole time zone at a given time.
For these cases, it's possible to compute the offset without ambiguity :
(date, time zone identifier) --> offset.

But things are sometimes more complex :
  • In the 19th century, local time was used, so longitude is also needed for the computation.
  • In some periods of history, the offset depends on political events, and precise local conditions need to be known.
    This happens for example in France or Italy at the end of world war 2, where the change of offset in a given city depends on the liberation date of the city.

G5 integration

Time zone computation is a weak point of current implementation :
  • Edge cases (like end of WW2) are not computed.
  • When 2 sources contradict, each case should be solved in a documented way.
As a consequence, offset computation in g5 is partial and should be a priori distrusted.
Persons have 3 fields to express a date and its timezone :
- birth.date : the legal time
- birth.tzo : the timezone offset
- birth.date-ut : universal time
With (see above) : date-ut + tzo = date

Examples of contradictions between sources

  • For Italy, both books say that offset is 1h for the whole country since 1893-11-01.
    Olson database says 1901-12-13
  • For France or Italy, FG says that "local time" is local mean time.
    THM talks about local real time.
    The difference between real and mean local time is the equation of time.
For such differences, the choice was made to use FG book.