線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1508
推到 Plurk!
推到 Facebook!

如何正確作時間運算

尚未結案
甘蔗夫
一般會員


發表:76
回覆:19
積分:19
註冊:2004-08-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-08 01:23:47 IP:61.228.xxx.xxx 未訂閱
請問各位大大: 我想寫一程式,當現在時間(包括日期)在某一時間點(如2005/3/7 PM 11:59:59),我希望在N秒之後能夠進行某項動作,而這程式適用於任何時間點,不會有任何時間計算上的問題,任何時間點都能準確無誤的執行我希望的動作,請問我該使用哪些函式 regard...
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-08 09:36:29 IP:61.66.xxx.xxx 未訂閱
參考一下    
 
#include 
#pragma hdrstop    #include "Unit1.h"
#include 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TDateTime A;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    A = IncSecond(Time(),100);
    Edit1->Text = A;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    TDateTime B;        B = Time();
    Edit2->Text = B;
    if ( SecondsBetween(A,B) == 0)
    {//你要做的事放在這
        Edit2->Text = B;
        Timer1->Enabled = false;
    }
}
//---------------------------------------------------------------------------
甘蔗夫
一般會員


發表:76
回覆:19
積分:19
註冊:2004-08-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-21 02:48:04 IP:61.228.xxx.xxx 未訂閱
我發現這個函數有bug 如現在是2005年2日晚上11點59分55秒我預計10秒後執行某些動作,理論上執行時間會是3日0點0分5秒,但當現在時間到達晚上12:00:00時,執行時間卻變成1899/12/31 上午12:00:05 請問各位大大是否有解決辦法或其他函數可用
g6101
高階會員


發表:22
回覆:129
積分:110
註冊:2002-06-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-24 00:07:59 IP:163.29.xxx.xxx 未訂閱
引言: 我發現這個函數有bug 如現在是2005年2日晚上11點59分55秒我預計10秒後執行某些動作,理論上執行時間會是3日0點0分5秒,但當現在時間到達晚上12:00:00時,執行時間卻變成1899/12/31 上午12:00:05 請問各位大大是否有解決辦法或其他函數可用
甘蔗夫您好: 只要把日期也一併記錄,就不會有上述困擾產生,我就引用blk5743所提供的程式碼,稍微修改下應可符合您的需求,程式碼如下: TDateTime A; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
    A = IncSecond(Now(),10);
    Edit1->Text = A;
} //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) {
    TDateTime B = Now();
    Edit2->Text = B;
    //if (!SecondsBetween(A,B))
    if (A.FormatString("hhnnss") == B.FormatString("hhnnss"))
    {  //你要做的事放在這
       A = IncSecond(Now(),10);
       Edit1->Text = B;
       MessageBeep(0);
       //Timer1->Enabled = false;
    }
} //--------------------------------------------------------------------------- ◎天長地久有時盡,追求知識無絕期!
系統時間:2024-05-03 20:52:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!