Trying to set PC clock programmatically just before Daylight Saving Time ends

Posted by Moe Sisko on Stack Overflow See other posts from Stack Overflow or by Moe Sisko
Published on 2010-05-25T07:21:24Z Indexed on 2010/05/25 7:31 UTC
Read the original article Hit count: 311

Filed under:
|
|

To reproduce :

1) Add Microsoft.VisualBasic assembly to your project reference

2) Change PC timezone to : (GMT+10:00) Canberra, Melbourne, Sydney . Ensure PC is set to automatically adjust clock for daylight savings time. (For this timezone, daylight savings time ends at 3am on 4 Apr 2010.)

3) add following code :

    public void SetNewDateTime(DateTime dt)
    {
        Microsoft.VisualBasic.DateAndTime.Today = dt; // ignores time component
        Microsoft.VisualBasic.DateAndTime.TimeOfDay = dt;  // ignores date component
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DateTime dt = new DateTime(2010, 4, 5, 5, 0, 0);  // XX
        SetNewDateTime(dt);  // XX

        System.Threading.Thread.Sleep(500);

        DateTime dt2 = new DateTime(2010, 4, 4, 1, 0, 0);
        SetNewDateTime(dt2);
    }

4) When button 1 is clicked, the PC clock eventually shows 2am, whereas 1 am was expected. (If code marked at "XX" is removed, the clock sometimes shows the correct time of 1 am).

Any idea what is happening ? (Or is there a more reliable way of setting the PC clock from C# code ?)

TIA.

© Stack Overflow or respective owner

Related posts about c#

Related posts about .NET