Gewusst wie: Abrufen oder Festlegen der Systemzeit

Aktualisiert: November 2007

Um die Systemzeit des Geräts festzulegen oder abzurufen, rufen Sie mithilfe eines Plattformaufrufs die systemeigenen Funktionen GetSystemTime oder SetSystemTime auf.

Beachten Sie, dass die GetSystemTime-Funktion Werte unter Verwendung der koordinierten Weltzeit (Universal Coordinated Time, UTC – entspricht Greenwich Mean Time) zurückgibt. Um Werte in der Ortszeit abzurufen, müssen Sie die Stundendifferenz zwischen Ihrer Zeitzone und UTC addieren bzw. subtrahieren. 24:00 (Mitternacht) in UTC entspricht beispielsweise 19:00 New Yorker Zeit; es gibt also eine Abweichung von -5 Stunden (UTC-5).

Die UTC-Abweichung gegenüber Ihrer Zeitzone können Sie den Eigenschaften für Datum und Uhrzeit auf der Registerkarte Zeitzone entnehmen.

In einigen Geräteemulatoren wird die Sommerzeit zunächst nicht ordnungsgemäß festgelegt, was sich auf das Ergebnis auswirken könnte.

Beispiel

In diesem Codebeispiel wird Folgendes definiert:

  • Plattformaufrufdeklarationen für die systemeigenen Methoden in Windows Embedded CE.

  • Eine Struktur, um Werte an die systemeigenen Methoden zu übergeben und von diesen zu empfangen

  • Eine verwaltete Methode mit dem Namen GetTime, die die aktuelle Zeit anzeigt

  • Eine verwaltete Methode mit dem Namen SetTime, die die Systemuhr eine Stunde vorstellt.

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());
}

Kompilieren des Codes

Für dieses Beispiel sind Verweise auf die folgenden Namespaces erforderlich:

Siehe auch

Weitere Ressourcen

Interoperabilität in .NET Compact Framework