嗨,我知道這已被問過,但我需要幫助在c#中更改系統日期時間。雖然做了谷歌搜索,我發現一個網站上,建議將以下代碼更改系統日期,時間
public struct SYSTEMTIME
{
public ushort wYear,wMonth,wDayOfWeek,wDay, wHour,wMinute,wSecond,wMilliseconds;
}
[DllImport("kernel32.dll")]
public extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);
/// <param name="lpSystemTime">[in] Pointer to a SYSTEMTIME structure that
/// contains the current system date and time.</param>
[DllImport("kernel32.dll")]
public extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);
static void Main()
{
Console.WriteLine(DateTime.Now.ToString());
SYSTEMTIME st = new SYSTEMTIME();
GetSystemTime(ref st);
Console.WriteLine("Adding 1 hour...");
st.wHour = (ushort)(st.wHour + 1 % 24);
if (SetSystemTime(ref st) == 0)
Console.WriteLine("FAILURE: SetSystemTime failed");
Console.WriteLine(DateTime.Now.ToString());
Console.WriteLine("Setting time back...");
st.wHour = (ushort)(st.wHour - 1 % 24);
SetSystemTime(ref st);
Console.WriteLine(DateTime.Now.ToString());
Console.WriteLine("Press Enter to exit");
Console.Read();
}
但是,當我在我的系統上運行它,它顯示了當前的日期/時間沒有變化。我應該做出改變嗎?
編輯:得到的消息失敗:SetSystemTime失敗,當我嘗試運行
這是例如測試目的?在這種情況下,抽象出時鐘通常會更好(因此,除去直接調用'DateTime.Now')而不是擺弄系統的實際時間。 –
此代碼更改日期並將其還原。除非你將「FAILURE:SetSystemTime failed」設置爲控制檯 - 時間已成功更改..但是一些毫秒。刪除「time-reverting part」,並根據需要調整代碼。 – rufanov
@Damien_The_Unbeliever實際上有一個應該生成用戶指定的特定年份的數據的程序。認爲只要用戶想要特定年份的消息,就可以改變系統的日期時間 – Drake