設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區
熱門搜尋: 海角七號  九降風  鷹眼  囧男孩  周杰倫  稻香  地心冒險  家庭教師 


休閒聊天
學術文化
感情感性
興趣交流
家庭事務
旅遊交流
飲食交流
家族門派
貼圖分享
動漫交流
音樂世界
美容打扮
潮流資訊
影視娛樂
電玩遊戲
連線遊戲
網絡遊戲
交易廣場
下載分享
BT下載區
CB下載區
電腦資訊
數碼產品
手機交流
網站事務
體育運動
時事新聞
上班一族
博彩娛樂
成人話題


 
標題: [求助] 可以明確抓取時間並輸出的函式
江小龜

Rank: 1
幼兒生(0/200)
潛水  
UID 3001066
精華 0
積分 180
帖子 413
潛水 6438 米
閱讀權限 10
註冊 2007-12-13
發表於 2008-1-1 09:00 PM  資料 文集 短消息 
伊莉遊戲

可以明確抓取時間並輸出的函式

[顯示] [隱藏]
可以明確讀秒的函式

像是說能很穩定的輸出1秒、然後我也可以把那一秒分割成好幾份,每次做不同的事

可以的話希望能有函式的功能解說及小範例幫助了解

謝謝

頂部
playcoo

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10
贊助會員
潛水  
UID 1641663
精華 0
積分 494
帖子 90
潛水 4222 米
閱讀權限 95
註冊 2007-6-26
發表於 2008-1-2 02:32 PM  資料 文集 短消息 
伊莉遊戲

1.如果單純抓取現下系統時間的話,
    time_t long_time;
    time(&long_time);
    struct tm date;
    date = *localtime(&long_time);

    根據date內容可知年月日時分秒,不過這單純是知道日期,所以可能跟
    你想要的有點出入。

2. 另一種方式,純粹是計數,所以無法明確知道現在是幾秒,但可以藉由前後
    數值差異,得知經過多少計數

    GetTickCount()是僅適用window環境的函式,會傳回一個計數值
    ex,
    DWORD start = GetTickCount();
    //...中間一堆程式碼
    DWORD end = GetTickCount();
    所以 end - start 等於花了多少的計數,將差異值除以1000,即可轉換成花了幾秒!

3. 類似2. ,也是傳回一個計數值,但是屬於較泛用的函式,適用於All Version的C語言
    clock_t start, end;
    double CostClock;
    start = clock();
    //...中間一堆程式碼
    end = clock();
    CostClock = (double)(end - start) / CLOCKS_PER_SEC; //<==CLOCKS_PER_SEC 為time.h內define的,值為1000
    所以此CostClock就會是變成秒數。

以上,至於你的需求,就依據上面自行研究,加以變化,或許有可能有缺漏或是謬誤,
尚請其他大大不吝指教,而以上的東西,在msdn內會有更詳細的說明,可以自行閱讀看看!

[ 本帖最後由 playcoo 於 2008-1-2 02:33 PM 編輯 ]

頂部
goodbye_mylove
(藍影)

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2440043
精華 0
積分 322
帖子 624
潛水 3325 米
閱讀權限 20
註冊 2007-9-29
發表於 2008-1-2 08:22 PM  資料 文集 短消息 
維克斯討論區

[回覆補充第二帖] 取得現在時間(系統時間)方式

補充:
(1)


補充 playcoo 大大的第一種方式
以下函式請您自行查詢
   struct tm *time_now;   
   time_t now;   
   char TimeStr[80];   
   
    //tzset();
    time(&now);   
    time_now = localtime(&now);   
    strftime(TimeStr, 80,   
             "%Y/%m/%d %a %H:%M:%S",   
             time_now);  

     TimeStr 即為你所要的 時間"字串"

(2)

如果是視窗程式設計 (或支援[/c [ 瀏覽完整內容請先註冊或登入會員。]

頂部
playcoo

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10
贊助會員
潛水  
UID 1641663
精華 0
積分 494
帖子 90
潛水 4222 米
閱讀權限 95
註冊 2007-6-26
發表於 2008-1-2 09:27 PM  資料 文集 短消息 
伊莉遊戲



QUOTE:
原帖由 goodbye_mylove 於 2008-1-2 08:22 PM 發表
補充:
(1)

補充 playcoo 大大的第一種方式
以下函式請您自行查詢
   struct tm *time_now;   
   time_t now;   
   char TimeStr;   
   
    //tzset();
    time(&now);   
    time_now = ...

To goodbye_mylove:

(6)基本上是一樣的東西,我是直接從我電腦裡找time.h的,而且會有誤差值是不可否認,
但以開版大的需求,應該是可以容忍的!

其實,求時間的方式很多,甚至於自己想辦法運用各種資源寫自己的Timer都可以!

頂部
goodbye_mylove
(藍影)

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2440043
精華 0
積分 322
帖子 624
潛水 3325 米
閱讀權限 20
註冊 2007-9-29
發表於 2008-1-2 09:49 PM  資料 文集 短消息 
伊莉遊戲

回復 #1 江小龜 的帖子

針對您要的 1 秒鐘做數個動作,

針對你的問題,我提出你 "一定會" 遇到的問題

(1)
     假設1秒鐘我分割成二個時間點,分別為 t1,t2,(設t1=0.5 sec, t2=1.0 sec)

     所執行的程序為 p1,p2

     每個程序消耗的時間為 e1,e2

     那麼你必需要確定一件事,就是程序 p1 的執行時間一定會小於 t2-t1(=0.5sec)

     不然你的程式會有很大的問題(因為傳統的程設是循序式,e1執行完畢才會執行e2)

     意思是說,如果 e1=1.0 sec

     那麼你把時間切了也沒用

     等 e1 執行完,下一個程序又跑回 e1,e2 不知道什麼時候才會執行

(2) 你的想法其實有點 "逆向"

     不是要判斷一秒需執行多少程序

     而是先確認、測式你的程序執行完一個需要多少秒

     (除非你已會用 thread 比較沒這方面大問題)

     再判斷你時間上的切割該怎麼切會使整個程式穩定

     而且說真的,程序執行時間也包在時間差裡面

     這種方式可信度真的有限
(3)

    如果你會視窗程式設計

    我比較建議你使用 SetTimer() 的方式,

    (語法為 SetTimer(UINT nIDEvent,UINT nElapse, NULL);)

    (其中 nElapse 為多少毫秒,如 輸入 200,就代表 0.2sec)

    再呼叫 WM_Timer()

   (在這裡就算你不用多行緒也可以辦得到!)

    這樣就等於是一個 系統幫你做 Polling 的方式,每 0.2 sec 就 polling 一次

    同時 polling 時間的準確度亦達 0.86 "微秒"

    如果你要用 Standard C 去做到這種地步,我想蠻困難的

    (光是算 clock() 準確度只達 5ms、Sleep 誤差近 1.09%....)

    所以,如果你要在一秒做數個動作,建議你還是學視窗設計(或會使用MFC)會比較好一點

    小弟淺見而已

(4)
   
    程式碼不附了(光編輯就不知道花多久時間了)

    有心學 MFC 的話請上 Google 大神 search...

頂部
 




當前時區 GMT+8, 現在時間是 2008-10-7 07:34 PM

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.057771 second(s), 6 queries , Gzip enabled

清除 Cookies - 聯繫我們 - 廣告查詢 [威旭代理] - 伊莉討論區 - Archiver
重要聲明:本討論區是以即時上載留言的方式運作,伊莉討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。伊莉討論區有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。