一、改變系統時間
c#的system.datetime類提供了對日期時間的封裝,用它進行時間的轉換和處理很方便,但是我沒有在其中找到任何可以用來修改系統時間的成員。用過vc、vb等的朋友可能知道,我們可以呼叫win32 api setlocaltime來改變系統時間,看來c#中也只能如此了。setlocaltime需要乙個systemtime結構指標作為引數,這倒不難,我們可以「比葫蘆畫瓢」很快在c#中定義這個結構,但問題是,我同時還想「享受」.net framework的system.datetime在時間轉換和處理方面的便利,怎麼辦?只有自己動手了,為我們的c#中的systemtime編寫成員函式,實現和system.datetime之間的互轉。請看下面的**:
首先我為了以後呼叫方便,新建了乙個c#檔案,在裡面把setlocaltime api放到乙個名稱為win32api的類中,並把這個類放到我自己定義的namespace中,避免名稱衝突。以後我還可以不斷向這個類和命名空間新增常用的api,以便構造我自己的c# win32 api函式庫j
//forproc_win32.cs
//對常用win32 api函式及結構的宣告
using system;
using system.runtime.interopservices;
namespace farproc.win32
///
/// 轉換為system.datetime型別。
///
///
public datetime todatetime()
///
/// 靜態方法。轉換為system.datetime型別。
///
/// systemtime型別的時間。
///
public static datetime todatetime(systemtime time)
}public class win32api}
下面在winform程式中呼叫。新建乙個c# winform程式,在form上新增乙個按鈕 button1,並新增如下**:
private void button1_click(object sender, system.eventargs e)
然後就可以執行這個程式看到效果了。
二、得到系統時間改變通知
另乙個問題,如果系統時間被人為改動了,我的程式想得到通知,並做相應的處理,怎麼辦?好像很難,呵呵,其實framework早為我們準備好了。比起上乙個問題,這個似乎還要簡單一些。
在microsoft.win32命名空間中有乙個systemevents類,我們只要定製它的乙個靜態事件timechanged就ok了!!
**片斷如下:
private void form1_load(object sender, system.eventargs e)
{//定製事件
systemevents.timechanged += new eventhandler(systemevents_timechanged);
//事件處理函式
private void systemevents_timechanged(object sender, eventargs e)
{messagebox.show("系統時間被改變了,現在時間為:" + datetime.now.tostring());
注意,這個事件在console程式中是無效的,可能是因為這個事件本身要依賴視窗和視窗訊息吧。
另外,建議大家仔細看看microsoft.win32命名空間中的所有內容,還有許多有用的東西呢!!
C 得到系統時間
time time 得到系統時間 初始化 time t t t time null tm lt lt localtime t hour lt tm hour minute lt tm min second lt tm sec 在標準c c 中,可通過tm結構來獲得日期和時間,tm結構在time.h中...
C語言得到當前系統時間
void gettime 格式化時間的格式 a 星期幾的簡寫 a 星期幾的全稱 b 月分的簡寫 b 月份的全稱 c 標準的日期的時間串 c 年份的後兩位數字 d 十進位制表示的每月的第幾天 d 月 天 年 e 在兩字元域中,十進位制表示的每月的第幾天 f 年 月 日 g 年份的後兩位數字,使用基於周...
C庫得到系統當前的時間
include include include static time t end time intmain endif time end time 得到當前從1970開始的時間 crtimp struct tm cdecl mingw nothrow localtime const time t ...