全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:905
推到 Plurk!
推到 Facebook!

关于时间的问题

尚未結案
liangzai
初階會員


發表:77
回覆:91
積分:33
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-06 16:36:32 IP:218.20.xxx.xxx 未訂閱
我现在写的一个程式中,需要计算员工的迟到时间和早退时间。 我在将员工的打卡时间读取到程式中去的时候,是使用字符串的格式,比如: 某员工,上班时间“0810”下班时间“1650” 现在对于该员工,正常上下班时间是“0800”“1700” 那么该员工应该迟到10分钟,早退10分钟, 但是我如果用1700-1650=50分钟。结果错误。 我明白这是因为100与60所产生的差别,请教前辈,有什么办法可以解决时间的加减问题?
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-06 17:44:47 IP:61.218.xxx.xxx 未訂閱
hi,liangzai: 將你所儲存的上下班時間,利用EncodeDate等相關涵數,將String轉TDateTime的型態,然後呼叫MinutesBetween函數,分別找出上下班時間與正常上下班時間所差的分鐘數即可
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-06 17:46:44 IP:202.62.xxx.xxx 未訂閱
您好﹗    試試如下的方法﹕
Var
  DT1, DT2, DTDiff: TDateTime;
  HH, MM, SS, MS: Word;
begin
  HH := StrToInt(Copy('1700', 1, 2));
  MM := StrToInt(Copy('1700', 3, 2));
  SS := StrToInt('00');
  MS := StrToInt('00');
  DT1 := EncodeTime(HH, MM, SS, MS);
  HH := StrToInt(Copy('1650', 1, 2));
  MM := StrToInt(Copy('1650', 3, 2));
  SS := StrToInt('00');
  MS := StrToInt('00');
  DT2 := EncodeTime(HH, MM, SS, MS);
  ShowMessage(TimeToStr(DT1) + #10#13 + TimeToStr(DT2));
  DecodeTime(DT1-DT2, HH, MM, SS, MS);
  ShowMessage('相差﹕' + Format('%d 小時, %d 分鐘, %d 秒', [HH, MM, SS]));
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-18 21:09:28
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!