Well, this is long way back when I was a rookie to develop Windows Mobile applications with C#.
I believe there are some people want to sync the device date/time with their web server as the device date/time somehow doesn't tick correctly after certain days. So first of all, you should have a look the SetSystemTime function as you need a SYSTEMTIME structure to pass the value to SetSystemTime function.

We start to P/Invoke the SetSystemTime method.

[DllImport("coredll.dll", SetLastError = true)]
private static extern bool SetSystemTime(ref SYSTEMTIME time);

Create the SYSTEMTIME structure.

public struct SYSTEMTIME
     public short year;
     public short month;
     public short dayOfWeek;
     public short day;
     public short hour;
     public short minute;
     public short second;
     public short milliseconds;

Create a simple function to convert DateTime to SYSTEMTIME and also calls the SetSystemTime function.

public void SetSystemDateTime(DateTime time)
     s.Year = (short)time.Year;
     s.Month = (short)time.Month;
     s.DayOfWeek = (short)time.DayOfWeek;
     s.Day = (short)time.Day;
     s.Hour = (short)time.Hour;
     s.Minute = (short)time.Minute;
     s.Second = (short)time.Second;
     s.Milliseconds = (short)time.Millisecond;
     SetSystemTime(ref s);

As most http web pages contains "Date" part of the document header and the "Date" part usually is the server time. So we gets the date/time and sync with our device. We use HttpWebRequest and HttpWebResponse to get the web page header.

public bool SyncDateTime(string url)
    HttpWebRequest myRequest = null;
    HttpWebResponse myResponse = null;
        //create a HTTP request of the file and capture the response
        myRequest = (HttpWebRequest)WebRequest.Create(url);
        myRequest.Accept = "*/*";
        myRequest.KeepAlive = false;

        // Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.          
        myResponse = (HttpWebResponse)myRequest.GetResponse();

        if (myResponse != null)
            if (myResponse.Headers["Date"] != null)
                DateTime dt = DateTime.Parse(myResponse.Headers["Date"], CultureInfo.CurrentCulture);
                // Sets the parsed time to device.
                return true;
        // Releases the resources of the response.
        if (myResponse != null)

        myRequest = null;
        myResponse = null;
    return false;

Above method has few millisecond or event seconds inaccuracy as we doesn't calculate the time difference from request to response. However, it is quite good enough for many customers. Ha... I am lazy again...