台灣最大程式設計社群網站
線上人數
574
 
會員總數:231134
接案會員:6781
文章總數:2319
討論主題:175378
歡迎您免費加入會員
討論區列表 >> C# >> 設定或取得系統時間
[變換順序]
[我要回覆]
1


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

樓主

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
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
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
 

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