Поделиться через


Пошаговое руководство. Возвращение и установка системного времени

Обновлен: Ноябрь 2007

Чтобы задать или получить системное время устройства, используйте вызов платформы для вызова машинных функций GetSystemTime или SetSystemTime.

Обратите внимание, что функция GetSystemTime возвращает время в формате UTC (также известном, как время GMT). Чтобы получить локальное время, добавьте или вычтите количество часов между нужным часовым поясом и UTC. Например, 24:00 (полночь) в формате UTC — это 19:00 в Нью-Йорке — смещение на минус 5 часов (UTC–5).

Чтобы определить смещение UTC для вашего часового пояса, см. вкладку "часовой пояс" окна "Свойства даты и времени".

Некоторые эмуляторы устройств вначале не устанавливают правильно зимнее или летнее время, что может повлиять на ваши результаты.

Пример

В этом тот примере кода определяется следующее:

  • Объявления платформенного вызова для собственных методов в Windows Embedded CE.

  • Структура для передачи и получения собственных методов.

  • Управляемый метод с именем GetTime, отображающий текущее время.

  • Управляемый метод с именем SetTime, устанавливающий системные часы с опережением на один час.

Public Structure SYSTEMTIME
    Public wYear As UInt16
    Public wMonth As UInt16
    Public wDayOfWeek As UInt16
    Public wDay As UInt16
    Public wHour As UInt16
    Public wMinute As UInt16
    Public wSecond As UInt16
    Public wMilliseconds As UInt16
End Structure

Declare Function GetSystemTime Lib "CoreDll.dll" _
    (ByRef lpSystemTime As SYSTEMTIME) As UInt32

Declare Function SetSystemTime Lib "CoreDll.dll" _
    (ByRef lpSystemTime As SYSTEMTIME) As UInt32

Public Sub GetTime
    ' Call the native GetSystemTime method
    ' with the defined structure.
    Dim st As New SYSTEMTIME
    GetSystemTime(st)

    ' Show the current time.
    MessageBox.Show("Current Time: "  & st.wHour.ToString() _
        & ":" & st.wMinute.ToString())
End Sub

Public Sub SetTime
    ' Call the native GetSystemTime method
    ' with the defined structure.
   Dim st As New SYSTEMTIME
    GetSystemTime(st)

    ' Set the system clock ahead one hour.
    st.wHour = Convert.ToUInt16(((CInt(st.wHour) + 1)) Mod 24)
    SetSystemTime(st)

End Sub



[DllImport("coredll.dll")]
private extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);

[DllImport("coredll.dll")]
private extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);


private struct SYSTEMTIME 
{
    public ushort wYear;
    public ushort wMonth; 
    public ushort wDayOfWeek; 
    public ushort wDay; 
    public ushort wHour; 
    public ushort wMinute; 
    public ushort wSecond; 
    public ushort wMilliseconds; 
}

private void GetTime()
{
    // Call the native GetSystemTime method
    // with the defined structure.
    SYSTEMTIME stime = new SYSTEMTIME();
    GetSystemTime(ref stime);

    // Show the current time.           
    MessageBox.Show("Current Time: "  + 
        stime.wHour.ToString() + ":"
        + stime.wMinute.ToString());
}
private void SetTime()
{
    // Call the native GetSystemTime method
    // with the defined structure.
    SYSTEMTIME systime = new SYSTEMTIME();
    GetSystemTime(ref systime);

    // Set the system clock ahead one hour.
    systime.wHour = (ushort)(systime.wHour + 1 % 24);
    SetSystemTime(ref systime);
    MessageBox.Show("New time: " + systime.wHour.ToString() + ":"
        + systime.wMinute.ToString());
}

Компиляция кода

Для этого примера требуются ссылки на следующие пространства имен:

См. также

Другие ресурсы

Взаимодействие в платформе .NET Compact Framework