c 修改系統時間的方法

2021-09-30 10:08:00 字數 2795 閱讀 3410

c#沒有提供直接的方法對系統時間進行設定,一般我們只能通過datetime.now獲取系統時間,但是並不能對這個時間進行修改。這裡對了解的主要的兩種方式做了個整理,希望對大家有幫助。

方法一,用api函式的方式來修改時間。

首先定義api函式

[structlayout( layoutkind.sequential)]

public struct systemtime

public datetime todatetime()

}//設定,獲取系統時間,setsystemtime()預設設定的為utc時間,比北京時間少了8個小時。

[dllimport("kernel32.dll")]

public static extern bool setsystemtime(ref systemtime time);

[dllimport("kernel32.dll")]

public static extern bool setlocaltime(ref systemtime time);

[dllimport("kernel32.dll")]

public static extern void getsystemtime(ref systemtime time);

[dllimport("kernel32.dll")]

public static extern void getlocaltime(ref systemtime time);

呼叫api函式,這裡主要要注意setsystemtime和setlocaltime,以及getsystemtime和getlocaltime的區別,盡量從測試結果中去分析比較。一般情況下我們就用setlocaltime和getlocaltime。

{

systemtime st = new systemtime();

win32.getlocaltime(ref st);

system.diagnostics.debug.writeline("getlocaltime()");

system.diagnostics.debug.writeline(st.todatetime().tostring("yyyy/mm/dd hh:mm:ss"));

win32.getsystemtime(ref st);

system.diagnostics.debug.writeline("getsystemtime()");

system.diagnostics.debug.writeline(st.todatetime().tostring("yyyy/mm/dd hh:mm:ss"));

datetime dt = convert.todatetime("2011/12/12 12:15:20");

system.diagnostics.debug.writeline("test time:2011/12/12 12:15:20");

st.fromdatetime(dt);

win32.setlocaltime(ref st);

system.diagnostics.debug.writeline("setlocaltime()");

system.diagnostics.debug.writeline(datetime.now.tostring("yyyy/mm/dd hh:mm:ss"));

win32.setsystemtime(ref st);

system.diagnostics.debug.writeline("setsystemtime()");

system.diagnostics.debug.writeline(datetime.now.tostring("yyyy/mm/dd hh:mm:ss"));

測試結果:

getlocaltime()

2011/12/12 20:16:00

getsystemtime()

2011/12/12 12:16:00  //獲取的時候比北京時間少8小時

test time:2011/12/12 12:15:20

setlocaltime()

2011/12/12 12:15:20

setsystemtime()   //設定的時候比北京時間多8小時

2011/12/12 20:15:20

方法二,cmd命令的方式

這種方式可以用process類呼叫cmd,以執行window指令碼的方式來改變系統時間,這種方式對於對批處理命令比較熟的人相當實用。**如下:

processstartinfo pstartinfocmd = new processstartinfo();

pstartinfocmd.filename = "cmd.exe";

pstartinfocmd.arguments = "/c date " + createdatetime.toshortdatestring() ;

pstartinfocmd.windowstyle = processwindowstyle.hidden;

process prostep1 = new process();

prostep1.startinfo = pstartinfocmd;

prostep1.start();

主要用了一句「 date 日期」指令碼命令,注意cmd的/c開關,代表的是執行完就關閉cmd視窗,否則如果呼叫了process 的waitforexit()等方法可能會阻塞。

來過就留下點腳印吧,太冷清了

C 修改系統時間

main 休眠 system.threading.thread.sleep 3000 還原當前時間 updtime new updatehelper bool res1 updtime.updatedatetime today console.writeline today.tostring end...

修改系統時間

使用 date s 命令來修改系統時間。比如將系統時間設定成1996年6月10日的命令如下。date s 06 10 96 將系統時間設定成下午1點12分0秒的命令如下。date s 13 12 00 注意,這裡說的是系統時間,是linux由作業系統維護的。在系統啟動時,linux作業系統將時間從c...

修改Linux系統時間和時區的方法

date r方法a 在kali裡測試成功 tzselect方法b僅限於redhat linux和centos timeconfig方法c適用於debian dpkg reconfigure tzdatacp usr share zoneinfo firsttimezone secondtimezon...