日付を比較するには?

解決


ニトロ  2008-02-27 20:46:54  No: 29941  IP: 192.*.*.*

DateTimePickerで選択された日付(DateTimePicker.Date)と
DBから抽出した日付(Query1.FieldByNAme('Date'))を比較して何日の差が
あるかを出すにはどうすればいいのでしょうか?
※必ずDateTimePickerの方が大きくなります。
※DBにはDate型で「2008/01/01」の形で登録されています。

編集 削除
KHE00221  2008-02-27 21:24:40  No: 29942  IP: 192.*.*.*

DateUtils.pas の  DaysBetween関数を使用して下さい。

var
    D1,D2: TDateTime;
    I: Integer;
begin
    D1 := StrToDate('2007/11/10');
    D2 := StrToDate('2008/07/16');
    I := DaysBetween(D1,D2);
end;

編集 削除
おっと  2008-02-28 15:15:12  No: 29943  IP: 192.*.*.*

TDateはControlsの中でTDate = type TDateTimeと宣言されているので
TDateTimePicker.Dateといえども時間を保持しています。

var
  FromDate, ToDate: TDate;
  I: integer;
begin
  FromDate := EncodeDate(2008,2,28) + EncodeTime(12,0,0,0);
  ToDate := EncodeDate(2008,2,29) + EncodeTime(11,59,59,0);
  I := DaysBetween(FromDate, ToDate);
end;
とするとI=0になります。
時間に関係なく日々計算するには
  FromDate := DateOf(FromDate);
  ToDate := DateOf(ToDate);
で時間を削除してください。

編集 削除
ニトロ  2008-02-29 08:54:57  No: 29944  IP: 192.*.*.*

解決しました
ありがとうございます

編集 削除