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...