匯出 (0) 列印
全部展開

HOW TO:取得或設定系統時間

若要取得或設定裝置的系統時間,可使用平台叫用 (Invoke) 來呼叫原生 GetSystemTimeSetSystemTime 函式。

請注意,GetSystemTime 函式會傳回 Coordinated Universal Time (UTC,也稱為格林威治標準時間)。若要取得本地時間,必須加減您的時區和 UTC 之間的時數差。例如,UTC 時間 24:00 (午夜) 是紐約的 19:00,之間的時數差為 5 小時 (UTC–5)。

若要判斷所在時區的 UTC 位移量,請參閱 [日期與時間] 屬性的 [時區] 索引標籤。

某些裝置模擬器一開始不會正確設定日光節約時間,這也會影響結果。

範例

這個程式碼範例定義下列作業:

  • 原生方法的平台叫用宣告

  • 用以從原生方法傳送和接收的結構

  • 名為 GetTime 的 Managed 方法會顯示目前的時間

  • 名為 SetTime 的 Managed 方法會將系統時鐘設定為加一小時

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

編譯程式碼

這個範例需要下列命名空間的參考:

請參閱

社群新增項目

新增
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft