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

如何實現日期加減

尚未結案
suntao008
一般會員


發表:70
回覆:38
積分:21
註冊:2003-10-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-20 09:47:38 IP:61.155.xxx.xxx 未訂閱
各位高手們: 請問如何實現日期型加減:如2003/11/20-2003/10/20=?天 謝謝各位高手 小女子敬候佳音!!!
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-20 10:26:17 IP:63.84.xxx.xxx 未訂閱
您好﹗    
Var
  Date1, Date2 : TDate;
  EDate, I : Integer;
begin
  Date1 := StrToDate('2003/11/20');
  Date2 := StrToDate('2003/10/20');
  EDate := Trunc(Date1-Date2);
  ShowMessage('共差' DateToStr(EDate) '天');
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-20 10:29:48 IP:61.221.xxx.xxx 未訂閱
suntao008 你好: 你好像問了很多次了,在發問前先看(找)一下已沒有相關的文章喔!! function TO_Day(S, E:String):Integer; var TotalDay:Integer; SDateTime, EDateTime:TDateTime; StartTimeStamp,EndTimeStamp:TTimeStamp; begin SDateTime:=StrToDateTime(S); EDateTime:=StrToDateTime(E); StartTimeStamp:=DateTimeToTimeStamp(SDateTime); EndTimeStamp:=DateTimeToTimeStamp(EDateTime); TotalDay:=EndTimeStamp.Date - StartTimeStamp.Date;//總天數 if TotalDay >0 then Result:=TotalDay else Result:=0; end;
------
======================
昏睡~
不昏睡~
不由昏睡~
jackperng1
一般會員


發表:10
回覆:5
積分:3
註冊:2003-06-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-26 15:33:25 IP:210.243.xxx.xxx 未訂閱
uses DateUtils lstartdate:='2003/01/01;' lendate :='2002/12/31'; I := DaysBetween(StrToDate(lstartDate),StrToDate(lendDate));
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-26 18:11:43 IP:211.96.xxx.xxx 未訂閱
有更簡單的方法,不過DELPHI表示日期的方法跟VB不同~~是用浮點數表示,整數位表示的是年月日,小數點之後的是當天的時間 整數部份的取得方式就是 (你要取得的日期)-(1899年12月30日) ,之間的差,就是整數的部份 var today : TDateTime ; // TDateTime就是double倍精確浮點數... begin today:=now; //2003年約是三萬七千多~ now()是內建日期時間函數 這樣推來,二個不同日期的整數位相減,就得出差了幾天... 那嘛如果把日期直接相加,就可以得到被加之後的日期 如 var adate: TDateTime; begin adate:=encodedate(2003,11,23); // 跟StrToDate用法相近 showmessage(formatdatetime('yyyy"年"mm"月"dd"日"'.adate 1) ); // 會顯示出 2003年11月24日 showmessage(formatdatetime('yyyy"年"mm"月"dd"日"'.adate-11) ); // 會顯示出 2003年11月22日 再來就是解釋小數點之後的部份----時間 很簡單,如果把一天看成24個小時,那麼0.5天就代表中午12點整,0.75就是24*0.75=18,下午六點整~~ 跟日期一樣,二個時間相減,就可以得出時間差(如果差的整數位大於0的話,就代表差了一天多) var adate , bdate : TDateTime; begin adate:=encodetime(13,55,30,0) ; 把adate表示成下午一點55分30秒 bdate:=encodetime(15,32,14,0) ; 下午三點32分14秒 abs(adate-bdate)*86400 ; // 二個時間之間共差了幾秒(取絕對值) // 一天共有24小時,一小時60分,一分60秒,則一天有24*60*60=86400秒 abs(adate-bdate)*1440 ; // 二個時間之間共差了幾分鐘 abs(adate-bdate)*24 ; // 二個時間之間共差了幾小時 對borland的delphi來說,從沒發生過千禧年的問題的原因就是delphi的日期時間的表示方法真的很廣,如果真要用真實的時間來算,可以記錄到11767033年咧~一千多萬年~人類歷史也沒那麼久~~~(題外話) 我懂的不多,懂的也不盡然是最佳的寫法,但求我懂的東西,能在大家的討論中,愈辯愈明~
系統時間:2024-06-28 18:33:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!