As you all know, Daylight Saving Time is being implemented in Mauritius as from this Sunday 26 October 2008 at 02:00. The exact rules are
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mauritius 2008 max - Oct lastSun 2:00s 1:00 S Rule Mauritius 2009 max - Mar lastSun 2:00s 0 -
(obtained from the timezone database as used in GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin, DJGPP, AIX, Mac OS X, OpenVMS, Oracle Database, Solaris, Tru64, and UnixWare — everything important except Windows in fact. Read this if you’re still using that bizarre OS. Thanks to Swadesh Bucktowar of DCDM Consulting for that.)
The rules mean that:
- On the last Sunday of October 2008 (the 26th) at exactly 02:00, we will save 1 hour (i.e. Mauritius Time will become GMT+5)
- On the last Sunday of March 2009 (the 29th) at exactly 02:00, we will stop having the 1 hour saving (i.e. Mauritian Time will become GMT+4)
- and this will repeat every year thereafter.
In more geekish words, here is what will happen:
Sat Oct 25 21:59:59 2008 UTC = Sun Oct 26 01:59:59 2008 MUT isdst=0 Sat Oct 25 22:00:00 2008 UTC = Sun Oct 26 03:00:00 2008 MUST isdst=1 Sat Mar 28 20:59:59 2009 UTC = Sun Mar 29 01:59:59 2009 MUST isdst=1 Sat Mar 28 21:00:00 2009 UTC = Sun Mar 29 01:00:00 2009 MUT isdst=0
Updated GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin, DJGPP, AIX, Mac OS X, OpenVMS, Oracle Database, Solaris, Tru64, and UnixWare systems will automatically change to the Mauritian Daylight Saving Time on Sunday 26 October.
The important word here is updated. If your system has not been updated for ages, then don’t expect the time to change by itself. You’ll have to do it manually.
I can confirm as of today 17 October 2008 that the following fully updated Linux distributions will switch to Mauritian Daylight Saving Time correctly and automatically:
- Ubuntu 8.04 and derivatives like Kubuntu => use tzdata_2008h => OK.
- Ubuntu 7.10 and derivatives like Kubuntu => use tzdata_2008h => OK.
- Ubuntu 7.04 and derivatives like Kubuntu => use tzdata_2008h => OK.
- Redhat Enterprise Linux 5 Client or Server => use tzdata-2008f => OK.
On the other hand, the following Linux distributions use an old version of tzdata which knows nothing of the Mauritian’s Government decision and the date and time will have to be adjusted manually (or, better, by replacing the old timezone database by a more recent one):
- Redhat Enterprise Linux 4 => uses tzdata-2004e => BAD
- Redhat Enterprise Linux 3 => uses tzdata-2003c => BAD
- Redhat Enterprise Linux 2 AS => uses glibc-2.2.4 => BAD
(I’ve not checked for other distributions. Can someone please tell me about SuSE as I know this distribution is being used by some corporate users here?)
An important caveat
[Thank to David Marjolin for his important observation that the following won’t be an issue this Sunday but will surely pose a problem in March 2009]
It’s nice to know that the time will automatically change on Sunday but what about transactions occurring at that time? For example, let’s say someone uses an ATM at 01:59:58 on Sunday and this is normally what should have happened (let’s assume that this is done in one transaction containing two SQL statements with a 4 seconds time interval between them):
01:59:58 => First SQL statement 02:00:02 => Second SQL statement
But now, with this Daylight Saving Time thing, this is what will happen:
01:59:58 => First SQL statement 03:00:02 => Second SQL statement
Hardly problematic. But what about March 2009? The same transaction will occur thus:
01:59:58 => First SQL statement 01:00:02 => Second SQL statement
We’ll go back in time!
Will this work? Well, one can argue that systems developed in the US or in Europe surely take this in account (by recording everything using GMT maybe.) But what about systems developed in Mauritius where this eventuality was not thought of? Maybe we’ll have to modify them. Or maybe the best thing to do, as pointed out by Swadesh when I talked to him today, is simply to disallow all transactions from 01:59:00 to the new 02:00:00 (i.e. for one hour) if this is possible, of course.
What do you think?