システム時計の日時を設定するシステム日時を勝手に変更してしまうことがよいことかという議論は置いておき、システム日時を変更する方法を2つ紹介します。 VB.NETのToday, DateString, TimeOfDay, TimeStringを使用する方法VB.NETでは、Todayプロパティ及びDateStringプロパティでシステム日付を、TimeOfDayプロパティ及びTimeStringプロパティでシステム時刻を設定できます。VB.NET以外でもMicrosoft.VisualBasic.dllを参照することにより、これらのプロパティにアクセスできます。 [VB.NET] 'システム日付を2005/1/2にする Today = New DateTime(2005, 1, 2, 0, 0, 0) 'システム日付を2005/2/3にする DateString = "2005-2-3" 'システム時刻を6:15:30にする TimeOfDay = New DateTime(2000, 1, 1, 6, 15, 30) 'システム時刻を8:25:45にする TimeString = "8:25:45" [C#] //システム日付を2005/1/2にする Microsoft.VisualBasic.DateAndTime.Today = new DateTime(2005, 1, 2, 0, 0, 0); //システム日付を2005/2/3にする Microsoft.VisualBasic.DateAndTime.DateString = "2005-2-3"; //システム時刻を6:15:30にする Microsoft.VisualBasic.DateAndTime.TimeOfDay = new DateTime(2000, 1, 1, 6, 15, 30); //システム時刻を8:25:45にする Microsoft.VisualBasic.DateAndTime.TimeString = "8:25:45"; Win32 APIを使用する方法また、Win32 APIのSetLocalTime関数を使用してシステム日時を変更することもできます。下のSetNowDateTimeメソッドは、DateTime型で日時を指定してシステム日時を変更するメソッドです。 [VB.NET] <StructLayout(LayoutKind.Sequential)> _ Public Structure SystemTime Public wYear As Short Public wMonth As Short Public wDayOfWeek As Short Public wDay As Short Public wHour As Short Public wMinute As Short Public wSecond As Short Public wMiliseconds As Short End Structure <DllImport("kernel32.dll")> _ Public Shared Function SetLocalTime( _ ByRef sysTime As SystemTime) As Boolean End Function ''' <summary> ''' 現在のシステム日時を設定する ''' </summary> ''' <param name="dt">設定する日時</param> Public Shared Sub SetNowDateTime(ByVal dt As DateTime) 'システム日時に設定する日時を指定する Dim sysTime As New SystemTime sysTime.wYear = dt.Year sysTime.wMonth = dt.Month sysTime.wDay = dt.Day sysTime.wHour = dt.Hour sysTime.wMinute = dt.Minute sysTime.wSecond = dt.Second sysTime.wMiliseconds = dt.Millisecond 'システム日時を設定する SetLocalTime(sysTime) End Sub [C#] //using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] public 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 wMiliseconds; } [DllImport("kernel32.dll")] public static extern bool SetLocalTime( ref SystemTime sysTime); /// <summary> /// 現在のシステム日時を設定する /// </summary> /// <param name="dt">設定する日時</param> public static void SetNowDateTime(DateTime dt) { //システム日時に設定する日時を指定する SystemTime sysTime = new SystemTime(); sysTime.wYear = (ushort) dt.Year; sysTime.wMonth = (ushort) dt.Month; sysTime.wDay = (ushort) dt.Day; sysTime.wHour = (ushort) dt.Hour; sysTime.wMinute = (ushort) dt.Minute; sysTime.wSecond = (ushort) dt.Second; sysTime.wMiliseconds = (ushort) dt.Millisecond; //システム日時を設定する SetLocalTime(ref sysTime); } (この記事は、「.NETプログラミング研究 第54号」で紹介したものを基にしています。) 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|