最初にやっている: Form1 の上に:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern bool SetLocalTime(ref SYSTEMTIME lpSystemTime);
[StructLayout(LayoutKind.Sequential)]
internal struct SYSTEMTIME
{
public ushort wYear;
public ushort wMonth;
public ushort wDayOfWeek; // ignored for the SetLocalTime function
public ushort wDay;
public ushort wHour;
public ushort wMinute;
public ushort wSecond;
public ushort wMilliseconds;
}
private int day;
private int month;
private int year;
private int hour;
private int minute;
次に、システム内の時刻を 1 日先に移動する方法と、現在の日に時刻を 1 日戻す方法の 2 つの方法があります。
private void ChangeTimeForword()
{
dt = DateTime.Now.AddDays(1);
day = dt.Day;
month = dt.Month;
year = dt.Year;
hour = dt.Hour;
minute = dt.Minute;
SYSTEMTIME time = new SYSTEMTIME();
time.wDay = (ushort)day;
time.wMonth = (ushort)month;
time.wYear = (ushort)year;
time.wHour = (ushort)hour;
time.wMinute = (ushort)minute;
if (!SetLocalTime(ref time))
{
// The native function call failed, so throw an exception
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
private void ChangeTimeOriginal()
{
try
{
dt = DateTime.Now.AddDays(-1);
day = dt.Day;
month = dt.Month;
year = dt.Year;
hour = dt.Hour;
minute = dt.Minute;
SYSTEMTIME time = new SYSTEMTIME();
time.wDay = (ushort)day;
time.wMonth = (ushort)month;
time.wYear = (ushort)year;
time.wHour = (ushort)hour;
time.wMinute = (ushort)minute;
if (!SetLocalTime(ref time))
{
// The native function call failed, so throw an exception
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
catch (Exception err)
{
MessageBox.Show("Error" + err.ToString());
}
}
初めて機能しましたが、日付が変更されました。最初の日付は 2013 年 9 月 30 日午後 7 時 43 分でしたが、現在は 2013 年 6 月 11 日の日付に変更され、6/12 と 6/11 の間を移動しています。
変。何故ですか ?