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

也是時間相減的問題

尚未結案
ychx
一般會員


發表:40
回覆:14
積分:10
註冊:2003-08-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-24 15:05:33 IP:218.0.xxx.xxx 未訂閱
比如: 2008-4-3 14:23:55 减去 2004-5-8 23:13:24 这中间有相差 几年几月几日几时几分几秒? 哪个大侠帮帮我吧!
kenspc
一般會員


發表:1
回覆:20
積分:4
註冊:2004-12-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-24 15:35:13 IP:61.6.xxx.xxx 未訂閱
假設date1為2008-4-3 14:23:55, date2為2004-5-8 23:13:24
  ShowMessage(FormatDateTime('YYYY-MM-DD HH:NN:SS', date1-date2));
這樣就可以得到你的答案了
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-24 16:09:26 IP:218.15.xxx.xxx 未訂閱
您好: 将您两次所问问题,结合一起,即可,试试
procedure TForm1.Button3Click(Sender: TObject);
var
  year,month,day,h,m,s,ms,days:word;
  str1,str2:string;
begin
  str1:='2004-5-8 14:23:55';
  str2:='2004-5-8 23:13:24';
  days:=DaysBetween(strtodatetime(str2),strtodatetime(str1));
  year:=days div 365;
  month:=(days mod 365) div 30;
  day:=(days mod 30);
    
  DecodeTime(strtodatetime(str2)-strtodatetime(str1),h,m,s,ms);  
  showmessage(format('%d年; ',[year]) format('%d月; ',[month]) format('%d日; ',[day]) format('%d小时; ',[h]) format('%d分钟; ',[m]) format('%d秒; ',[s]) format('%d微秒',[ms]));
end;
~~~行径窄处,留一步与人行~~~
ychx
一般會員


發表:40
回覆:14
積分:10
註冊:2003-08-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-27 10:52:19 IP:218.0.xxx.xxx 未訂閱
几位大大说的有理,不过如果一个小的时间减去大的时间就最成正数了,我是在倒计时中使用的,比如大的时间减小的时间为 57,56,55,54...,如果小的时间减大的时间就成了 54,55,56,57...,因为我的天数还没到,所以还要倒计时,这样就不准确了!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-27 11:40:15 IP:218.15.xxx.xxx 未訂閱
引言: 几位大大说的有理,不过如果一个小的时间减去大的时间就最成正数了,我是在倒计时中使用的,比如大的时间减小的时间为 57,56,55,54...,如果小的时间减大的时间就成了 54,55,56,57...,因为我的天数还没到,所以还要倒计时,这样就不准确了!
ychx您好:您有试过程式吗不明白您所需,可否贴出代码,或说明您的需求 ~~~行径窄处,留一步与人行~~~
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-27 12:13:10 IP:219.68.xxx.xxx 未訂閱

ShowMessage(FormatDateTime('YYYY-MM-DD HH:NN:SS', date1-date2));  是錯的作法    因為FormatDataTime 或是說 TDatetime (float值) 是以 1899/12/30 12:00 am 為 0 ,  1 就等於24小時 (1天)
所以TDatetime=0.1就相當於 1/24 小時  = (1/24)*60分鐘  
所以如果帶入   date1=2004/01/01 10:00:00 , date2=2004/01/01 09:00:00 (相差一小時)
結果會變成  1899-12-30 01:00:00
等於是得出 算出距離1899/12/30 12:00 am 1個小時的TDatetime值    //此函式跟時間誰先誰後無關
function TForm1.TimeStrInBetween(time1, time2: TDatetime):String;
var
  days, year,mon,day, h, m, s, ms:Word;
begin  
  DivMod(DaysBetween(time1, time2), 365 , year, days); //精簡一下
  DivMod(days, 30, mon, day); //精簡一下
  DecodeTime(time1-time2,h,m,s,ms);
  Result:=Format('%d  年, %d 月, %d 日, %d 小時, %d 分, %d 秒, %d 微秒', [year, mon, day, h, m, s, ms]);
end;
系統時間:2024-06-28 19:22:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!