台灣最具影響力的-資訊專家社群 - 讓您成為最有價值的IT專業人才
線上人數
857
 
會員總數:230320
接案會員:6772
文章總數:2320
討論主題:176108
歡迎您免費加入會員
討論區列表 >> C# >> 設定或取得系統時間

[變換順序]
[我要回覆]
1


回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
設定或取得系統時間
價值 : 30 QP  點閱數:4602 回應數:11

點圖分享到Plurk吧!
樓主

william
門外漢
0 13
260 46
發送站內信

各位大大:
下面程式是我網路上找到的程式(設定或取得系統時間)
有別的方法嗎?
而且coredll.dll去網路上找的都不能用
那裡可以找的到?
謝謝幫忙喔!

[DllImport("coredll.dll")]
private extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);

[DllImport("coredll.dll")]
private extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);


private 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 wMilliseconds;
}

private void GetTime()
{
// Call the native GetSystemTime method
// with the defined structure.
SYSTEMTIME stime = new SYSTEMTIME();
GetSystemTime(ref stime);

// Show the current time.
MessageBox.Show("Current Time: " + stime.wHour.ToString() + ":" + stime.wMinute.ToString());
}
private void SetTime()
{
// Call the native GetSystemTime method
// with the defined structure.
SYSTEMTIME systime = new SYSTEMTIME();
GetSystemTime(ref systime);

// Set the system clock ahead one hour.
systime.wHour = (ushort)(systime.wHour + 1 % 24);
SetSystemTime(ref systime);
MessageBox.Show("New time: " + systime.wHour.ToString() + ":"
+ systime.wMinute.ToString());
}
本篇文章發表於2010-04-23 09:27
什麼是iT Power資訊報 2010年藍色小舖認證專家風雲榜完全名單
1樓
回應

JoJo
檢舉此回應
getsystemtime (kernel32)
setsystemtime (kernel32)


本篇文章回覆於2010-04-23 10:04
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

william
檢舉此回應
請問kernel32.dll那裡有


本篇文章回覆於2010-04-23 10:19
--未登入的會員無法查看對方簽名檔--
3樓
回應

軋延油
檢舉此回應
那kernel32.dll是系統檔案...
如果你對 WinAPI 的使用方式有不清楚
你可以參考 : http://www.dotblogs.com.tw/nobel12/archive/2009/10/05/10915.aspx
( 這文章雖然不是針對 getsystemtime 來做,但有異曲同工之妙 )

以 getsystemtime 來說,只要你先把下述在程式中宣告

[DllImport("kernel32.dll")]
static extern void GetSystemTime(out SYSTEMTIME lpSystemTime);

然後再呼叫 GetSystemTime 方法即可


或你可參考
HOW TO:取得或設定系統時間 : http://msdn.microsoft.com/zh-tw/library/ms172517(VS.80).aspx
這是詳細參考範例


本篇文章回覆於2010-04-23 11:20
--未登入的會員無法查看對方簽名檔--
4樓
不錯的參考

JoJo
檢舉此回應
您是用XP還是Mobile作業系統?在WINDOWS\SYSTEM32裡;API只需宣告,不用加入參告...


本篇文章回覆於2010-04-23 11:21
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

william
檢舉此回應
我是XP的
先用短一點的程式這樣試了一下
可是天(wDay)的部份會不對,其他都對,是因為上午下午的關係嗎?
要如何轉?

[DllImport("kernel32.dll")]
static extern void GetSystemTime(ref SYSTEMTIME lpSystemTime);

private 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 wMilliseconds;
}

private void GetTime()
{
// Call the native GetSystemTime method
// with the defined structure.
SYSTEMTIME stime = new SYSTEMTIME();
GetSystemTime(ref stime);

// Show the current time.
MessageBox.Show("Current Time: " + stime.wYear.ToString() + stime.wMonth.ToString() + stime.wDay.ToString() + stime.wHour.ToString() + stime.wMinute.ToString() + stime.wSecond.ToString());

}




本篇文章回覆於2010-04-23 12:02
--未登入的會員無法查看對方簽名檔--
6樓
回應

軋延油
檢舉此回應
我剛才拿你的 code 去測試了一下,發現到你說的 wDay 我是正常的耶~~~
反倒是 wHour 我是不正常的


本篇文章回覆於2010-04-23 16:31
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

軋延油
檢舉此回應
對了....我的 wHour 會出現是 8時,原因是 UTC 的關係
也就是說這是取得 格林威治時間 的因素... 所以算是正常!!!


本篇文章回覆於2010-04-23 16:47
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

william
檢舉此回應
那要自己再加8小時?有方法解決嗎?


本篇文章回覆於2010-04-23 16:51
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

Bill
檢舉此回應
SetLocalTime Function
http://msdn.microsoft.com/en-us/library/ms724936%28VS.85%29.aspx
GetLocalTime Function
http://msdn.microsoft.com/en-us/library/ms724338%28VS.85%29.aspx


本篇文章回覆於2010-04-25 11:45
--未登入的會員無法查看對方簽名檔--
10樓
回應

念慈庵
檢舉此回應
我用了上述 code 去測試

SetLocalTime 總是 return false 無法修改

我使用是 win 7 不知是否與權限有關係 ???

或者該怎麼修改 code 呢???


本篇文章回覆於2013-04-09 15:38
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

william
檢舉此回應
京都,那時我也沒試成功,後來忙就沒再測試了


本篇文章回覆於2013-04-11 08:08
--未登入的會員無法查看對方簽名檔--
[變換順序]
1
 

回覆
如要回應,請先登入.