ネイティブの GetSystemTime / SetSystemTime 関数を使うことで、デバイスのシステム時刻を取得/設定出来ます。
GetSystemTime 関数は、グリニッジ標準時(UTC)でシステム時刻を返してきますので注意してください。グリニッジ標準時(UTC)から9時間進めると日本標準時が求める事が出来ます。
以下にサンプルコードを示します。
ネイティブ関数とやり取りする為の構造体を定義
VB.NET
' デフォルトの名前空間に指定しておきます 'Imports System.Runtime.InteropServices ' SYSTEMTIME 構造体は日付と時間を表します。 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 ' 現在のシステム日時を取得します <DllImport("coredll.dll")> _ Private Shared Function GetSystemTime( _ ByRef lpSystemTime As SYSTEMTIME) As UInt32 End Function ' 現在のシステム日時を設定します。 <DllImport("coredll.dll")> _ Private Shared Function SetSystemTime( _ ByRef lpSystemTime As SYSTEMTIME) As UInt32 End Function
C#
// デフォルトの名前空間に指定しておきます //Imports System.Runtime.InteropServices // SYSTEMTIME 構造体は日付と時間を表します。 public struct SYSTEMTIME { public UInt16 wYear; public UInt16 wMonth; public UInt16 wDayOfWeek; public UInt16 wDay; public UInt16 wHour; public UInt16 wMinute; public UInt16 wSecond; public UInt16 wMilliseconds; } // 現在のシステム日時を取得します [DllImport("coredll.dll")] private static extern UInt32 GetSystemTime( ref SYSTEMTIME lpSystemTime); // 現在のシステム日時を設定します。 [DllImport("coredll.dll")] private static extern UInt32 SetSystemTime( ref SYSTEMTIME lpSystemTime);
システム時刻を取得する
VB.NET
Public Sub GetTime() ' GetSystemTime 関数から現在のシステム時刻を取得する Dim st As New SYSTEMTIME GetSystemTime(st) ' 現在の時間を表示します Dim curTime = String.Format("現在時刻 {0}:{1}", _ st.wHour.ToString(), _ st.wMinute.ToString()) MessageBox.Show(curTime) End Sub
C#
public void GetTime() { // GetSystemTime 関数から現在のシステム時刻を取得する SYSTEMTIME st = new SYSTEMTIME(); GetSystemTime(st); // 現在の時間を表示します var curTime = string.Format("現在時刻 {0}:{1}", st.wHour.ToString(), st.wMinute.ToString()); MessageBox.Show(curTime); }
実行結果
上記のサンプルコードを実行したところ、システム時刻を取得してメッセージボックスに表示します。
システム時刻を設定する
1時間進めます。
VB.NET
Public Sub SetTime() ' GetSystemTime 関数から現在のシステム時刻を取得する Dim st As New SYSTEMTIME GetSystemTime(st) ' 1時間早めた時間をシステム時刻へ設定します st.wHour = Convert.ToUInt16(((CInt(st.wHour) + 1)) Mod 24) SetSystemTime(st) End Sub
C#
public void SetTime() { // GetSystemTime 関数から現在のシステム時刻を取得する SYSTEMTIME st = new SYSTEMTIME(); GetSystemTime(st); // 1時間早めた時間をシステム時刻へ設定します st.wHour = Convert.ToUInt16((((int)st.wHour + 1)) % 24); SetSystemTime(st); }
参照
関連記事
Windows Mobile(.NET Compact Framework)を使ってアプリ開発する際に逆引きとしてお使いください。