HoursBetween 的問題 |
尚未結案
|
tidal
初階會員 發表:93 回覆:32 積分:25 註冊:2003-07-15 發送簡訊給我 |
這是我的code , 為什麼result 有時會出現0, 當時間是相距1小時
for i:= 1 to length(dayTimeAdded) - 24 do begin
if ( i <> 1) then begin
if daytimeadded[i] <> '' then begin
showMessage('start ' daytimeadded[i-1]);
showMessage('end ' daytimeadded[i]);
showMessage(inttostr(HoursBetween(strtodatetime(daytimeadded[i]),strtodatetime(daytimeadded[i-1]))));
end;
end;
end; 比較1: start: 2004/9/23 上午 10:00:00
end: 2004/9/23 上午 11:00:00
DaysBetween result=1 比較2: start: 2004/9/23 上午 11:00:00
end: 2004/9/23 下午 12:00:00
DaysBetween result=0 比較3: start: 2004/9/23 下午 12:00:00
end: 2004/9/23 下午 01:00:00
DaysBetween result=0 比較4: start: 2004/9/23 下午 01:00:00
end: 2004/9/23 下午 02:00:00
DaysBetween result=1 比較5: start: 2004/9/23 下午 02:00:00
end: 2004/9/23 下午 03:00:00
DaysBetween result=0 比較6: start: 2004/9/23 下午 03:00:00
end: 2004/9/23 下午 04:00:00
DaysBetween result=0 比較7: start: 2004/9/23 下午 04:00:00
end: 2004/9/23 下午 05:00:00
DaysBetween result=1 我不知道是什麼原因
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
This is round off error. TDateTime is similar as a double which is suffering from round off error. And take a look at the function in DateUtils:
function HoursBetween(const ANow, AThen: TDateTime): Int64; begin Result := Trunc(HourSpan(ANow, AThen)); end;http://pywong.hk.st http://www.lazybones.ca |
tonytop
中階會員 發表:6 回覆:114 積分:89 註冊:2003-12-04 發送簡訊給我 |
|
tidal
初階會員 發表:93 回覆:32 積分:25 註冊:2003-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |