FW: suggestion for simplified represention of timezone rules

Clive D.W. Feather clive at demon.net
Mon Jan 8 16:02:58 UTC 2007

> One aspect of the representation of rules I find awkward is the notation
> for the day on which a rule takes effect.  There are rules such as
> "lastSun" or "Sun>=8", etc.  While descriptive, they are are hard to
> process.

Not that hard. And it's a truism that it's better to have the computer do
the work than humans.

> I would like to suggest a better approach.  It takes the form "d op nn",
> where
> 	'd' is the day-of-week, 0=Sun to 6=Sat
> 	'op' is a comparison code of '<', '=' or '>', and
> 	'nn' is a 2-digit day number (may be 00 or 32)
> The comparision code works as follows:
> 	'='	nn is an exact value
> 	'<'	rule describes the last day less than nn
> 	'>'	rule describes the first day greater than nn

It helps humans to allow ">=" and <=".

> Examples:
> 	0>07	first Sun > 7 (same as first Sun >= 8)
> 	0<32	last Sun < 32 (same as "lastSun")
> 	0=27	Sun the 27th of the month

I'm afraid I don't find this better. It's harder to interpret "0" than
"Sun". So why not "Sun>07" or "Wed<32"?

Any why force the day number to be 2 digits. Does it hurt to allow "Sun>7"?

> When a range of years are involved in a rule, there is no exact
> day-of-week, and in such cases, '9' may be used as a place-holder:

Again, surely "Any" (or even the old standby "*") is better.

> 	9=01	the first day of the month, regardless of what
> day-of-week it is


But then why not just say "1"?

> It is conceivable that 9<nn could be used, but the only case where it
> would have any merit is in February:
> 	9<32	last day of the month
> For months other than Feb, the value is a constant for a given month,
> and for Feb it depends on the leap-year status.  Since no one (that I
> know of) does anthing about DST in Feb, we can safely eliminate the 9<nn
> form as well as the 9>nn form.

No, because we don't *know* that nobody will ever introduce "last Thursday
in February".

> The conversion from existing rules to this format is pretty
> straightforward:
> 	lastSun		0<32		'32' is constant for 'last'

But, again, what's wrong with "last"?

> 	Sun>=8		0>07		subtract 1 from the tz rule
> value

If we go your way, what's wrong with "0>=08", or "0>8", or "Sun>8"?

> 	Sun<=21		0<22		add 1 to the tz rule value


> 	May 1 1980	4=01		May 1 1980 is a Thursday

But so are many other May 1sts.

Clive D.W. Feather  | Work:  <clive at demon.net>   | Tel:    +44 20 8495 6138
Internet Expert     | Home:  <clive at davros.org>  | Fax:    +44 870 051 9937
Demon Internet      | WWW: http://www.davros.org | Mobile: +44 7973 377646
THUS plc            |                            |

More information about the tz mailing list