Eugene van der Pijll wrote: >OK, so a "legal Europe/London" timezone is meaningful (though not really >useful). As long as you're not proposing to change the Europe/London >timezone itself.
I'd initially imagined actually changing Europe/London, but on reflection I realised that would be awfully disruptive. I think it'd be best to have Europe/London/Legal, with Europe/London being the common-usage form. Historically there's some point before which common usage is based on UT1 rather than UTC. Something I missed out from my earlier analysis: the choice of base time scale, as well as the offset from it, can vary over time within a timezone. Interestingly, in the prehistory before UTC but after the invention of the caesium clock, several time signals operated an informally-specified system resembling the rubber-seconds UTC: a frequency offset changing infrequently, with jumps of 20 ms to stay close to UT1 or UT2. They weren't internationally synchronised until 1960, leading to UTC in 1961. We could model these as yet more time scales using the same mechanism as for rubber-seconds UTC. >There is one horologist(?) in the British parliament (probably the House >of Lords), Lord Tanlaw, It is he who introduced the Coordinated Universal Time Bill. >E.g. in this time scale, days are not of equal length. Does that mean >that there were leap seconds (or fractional leap seconds) >inserted/removed every day or every few days? Were the seconds of >varying length? In apparent or mean solar time, every day contains exactly 86400 seconds by definition. The second here is really a unit of angle, not of time as we now understand it. The duration of such a second is continuously variable. There are no leaps. >even in Victorian times, there are probably no records where each church >tower got its time from. There are plenty of records along the lines of "Cambridge time is 3 minutes ahead of London time". These differences were well known and quite stable. It was, in fact, a timezone system, in that era. >Hmmm. Just like the Olson time zones are not named UTC+1/2 (for >example), I'd like the LMT/LAT time scales to have a more meaningful >notation than just the time difference with GMT/GAT. My intention was that you'd be able to name a GAT+offset zone if useful. The offset syntax is for occasions when an unnamed zone is temporarily required. >+01:00 - offset; interpreted as timezone relative to UTC (always) I'd like to deprecate the bare offset. I think the base should be explicitly specified. >Europe/London - Olson time zon; possibly using DST; relative to UTC I want to be able to name zones that are not based on UTC. Certainly want to have timezone data that predates the existence of UTC. The choice of base timescale is a feature of the zone, not fundamental to the timezone system. >UTC - time scale; no offset or DST rules >UT1 - ditto (and also: GPST, TAI, "GAT", ...) >TT/TAI - time scale, with specific realisation We have two distinct uses of "/" here. Need to think about how to disambiguate. If a syntax were to be defined from scratch then I'd rather use "." for multi-part names and "/" strictly for realisations. "Europe.London" looks good to me. >UTC+01:00, UT1+01:00 - offset+time scale Yes. >UTC-Europe/London, UT1-Europe/London ??? - Doesn't look too bad? If this feature is to be supported, I'd prefer to make it explicit that you're taking the offset part of the named zone and ignoring its built-in base time scale. Also better to use "+" than "-" here, lest it appear that you want to apply the opposite of the UK time offsets. >TT/TAI-Europe/London - I have no idea why this would ever be useful... There's a serious possibility, on a decadal timescale, of legal and civil time in some jurisdictions switching away from a UTC basis to be based on TAI. Using TT(TAI) is less likely, but a reasonable variation. I think allowing TT(TAI) in than syntactic position is just as reasonable as allowing UT1 and GAT. I've looked at the kinds of names used in the Olson database. There are 555 names in total in the current version. They fall into several identifiable classes: * pure geographical, matching qr#(?!Etc/)[A-Za-z]+(/[-_A-Za-z]+)+# * hack poorly implementing Riyadh apparent solar time, matching qr#(Asia|Mideast)/Riyadh\d\d# * System V style $TZ values for US zones, matching qr#[A-Z]{3}\d[A-Z]{3}# * fixed offsets from UT, matching qr#Etc/GMT[-+]\d\d?# * names for UT, matching qr#Etc/[A-Za-z0]+# * short names for UT, matching qr#GMT[-+]?0|[A-Za-z]+# * deprecated shord geographical names, matching qr#[-A-Za-z]+# * placeholder zone for use as system default, matching qr#Factory# Of these eight distinct classes, I think we only want the database for the first class of name (pure geographical). If we're extending the timezone namespace then we can decide for ourselves what to do for backward compatibility. Conveniently, the pure geographical names follow a fairly restrictive syntax: no digits, no "+", no "-" in the first component. >User interface could be better, Which aspect of it? User friendliness was certainly not a major consideration in writing it, but I'm open to suggestions. > When do you plan to implement UT1 (using the published values, some >interpolation and extrapolation, and some (no doubt inaccurate) equation >for the deceleration of the earth's rotation? ;-) I certainly do plan to do the astronomical time scales. I'm gradually researching sources of TT<=>UT1 data. The IERS publishes measured daily values of UT1-UTC, and each week publishes daily extrapolated values for the next year. That gives me recent history and near-term future. For long-term future we have good models of the secular deceleration: it's pretty linear. Phase lock is lost, but interval calculations will work. Medium-term future I'm concerned about, because IERS has the knowledge to extrapolate years out but doesn't publish either the models or the predictions AFAICT. For the past, going back a couple of centuries, actual measurements exist, but I don't know where to find them. For earlier recorded history there are some very isolated measurements from eclipse records, also requiring research. In prehistory we've got archaeological and geological evidence of LOD, but of course no phase synchronisation. I'd like to put all this knowledge behind a consistent interface. So tt_to_ut1() and ut1_to_tt() functions will hide the complexity of multiple data sources. Also want tai_to_ut1() and ut1_to_tai(), for greater precision in the TAI era. (UT1-TT(TAI) is known somewhat better than UT1-TT, because of the uncertainty in TT(TAI)-TAI.) I really want to have explicit uncertainty bounds as part of this interface. I ought to add them to the Time::TT conversions too: they're conspicuously missing, but unfortunately the uncertainty data is also conspicuously missing from the data files that it downloads from BIPM. The real-time version of UT1 in purchron only needs to look at IERS forecasts. Ideally I'd like to do that by using the non-real-time tai_to_ut1() in the background and then doing piecewise linear interpolation in the display generator. But since handling the IERS forecasts alone is much simpler than the full UT1 module, I might do the IERS bit on its own in purchron first. -zefram