Working out when Windows updates the clocks as daylight saving begins and ends

This content is 16 years old. I don't routinely update old blog posts as they are only intended to represent a view at a particular point in time. Please be warned that the information here may be out of date.

I can’t always answer e-mails for help through this blog (I simply don’t have the time) but, a few days ago, I received an e-mail from a reader with a question that intrigued me – at what time did Windows update the system clock when British Summer Time ended last weekend? I knew that the official end time was 02:00 (and it’s 01:00 when the clocks go forward again in the spring) but there was nothing in the logs to indicate the time when Windows applied the changes.

After a bit of research I found that this information is written to the registry when the time zone is selected at setup time, or via the Control Panel date and time applet. On my Windows Server 2008 system, reg query hklm\system\currentcontrolset\control\timezoneinformation returned:

HKEY_LOCAL_MACHINE\system\currentcontrolset\control\timezoneinformation
    Bias    REG_DWORD    0x0
    DaylightBias    REG_DWORD    0xffffffc4
    DaylightName    REG_SZ    @tzres.dll,-261
    DaylightStart    REG_BINARY    00000300050001000000000000000000
    DynamicDaylightTimeDisabled    REG_DWORD    0x0
    StandardBias    REG_DWORD    0x0
    StandardName    EG_SZ    @tzres.dll,-262
    StandardStart    EG_BINARY    00000A00050002000000000000000000
    TimeZoneKeyName    REG_SZ    GMT Standard Time
    ActiveTimeBias    REG_DWORD    0x0

It’s the daylightstart and standardstart values that are of interest here – reg query hklm\system\currentcontrolset\control\timezoneinformation /v daylightstart returns:

HKEY_LOCAL_MACHINE\system\currentcontrolset\control\timezoneinformation
    daylightstart    REG_BINARY    00000300050001000000000000000000

and reg query hklm\system\currentcontrolset\control\timezoneinformation /v standardstart shows:

HKEY_LOCAL_MACHINE\system\currentcontrolset\control\timezoneinformation
    standardstart    REG_BINARY    00000A00050002000000000000000000

Although I can’t work out the format of the binary data, I can see the differences. Ignoring the second 8 bytes (which is all zero) I can see that the differences are:

00 00 03 00 05 00 01 00

00 00 0A 00 05 00 02 00

That looks to me like 03 might be March and 0A (decimal 10) might be October, whilst and 01 may represent 1am in which case 02 would be 2am.

There’s also some more information in Microsoft knowledge base article 914387 including a link to the Windows Time Zone Editor (tzedit.exe) utility that is used to create timezones (as well as to another utility for combing event logs).Windows Time Zone Editor showing the settings for GMT The Windows Time Zone Editor is written for Windows 2000 and I’ve not been able to get the resulting time zone that I defined to load on my 64-bit copy of Windows Server 2008 in order to work out the resulting registry changes but I’m pretty sure that the 05 in the registry values for daylightstart and standardstart represents the last day (the options are 1st, 2nd, 3rd, 4th and last) and that one of the 00s is Sunday. One thing that it does do is to confirm that daylight saving for Greenwich Mean Time (British Summer Time) starts on the last Sunday of March at 01:00 and ends on the last Sunday in October at 02:00 – as shown in the accompanying image.

If anyone knows any more about the bytes I haven’t tracked down yet, I’d be pleased to hear your comments!

3 thoughts on “Working out when Windows updates the clocks as daylight saving begins and ends

  1. My values for US Central time are:
    Standard – 0B 00 01 00 02
    Daylight – 03 00 02 00 02

    And our dates are the second Sunday in March (03) and the first Sunday in November (0B).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.