日付を比較するには?

解決


ニトロ  2008-02-28 05:46:54  No: 29941

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


KHE00221  2008-02-28 06:24:40  No: 29942

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-29 00:15:12  No: 29943

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 17:54:57  No: 29944

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加