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: