Delphi4でTDateTime型の変数2つを比較して4か月以上離れている場合の動作を作成したいのですが、比較する関数は無いでしょうか?
調べていたところDateUtils.pasにあるMonthsBetweenで比較できるようでしたが、Delphi6,7のインストールフォルダにはありましたが、Delphi4には存在しませんでした。(Delphi6から実装されたもの?)
DateUtils.pas内の関数を見ていたところ
MonthsBetweenよりもWithinPastMonthsの方がやりたいことに近かったようです。
if WithinPastMonths(Now(), DateTime1, 3) then
begin
〜
end;
をDelphi4で行いたいです。
単に月数だけでいいなら、簡単に比較できませんか?
例えば年を12倍して月数に代えて引き算、
4以内ならTrueとか。
下手にないものねだりをするより、作ってしまった方が
簡単では?
あと、上記はあくまでも提示された内容程度の動作を
満たす仕様です。詳細な要件が示されていないため、
自作する場合はこれ以上の助言はできません。
Delphi4にもありそうな気がしますが
IncMonth
で出来るのでは
>ukさん、3Kさん
返信ありがとうございます。
Delphi4にもあったのですね…調べる能力が足りませんでした。
結果的には以下のように実装できました。
function TForm.MonthCheck(CheckDate: TDateTime): Boolean;
var
dateBefore3m: TDateTime;
dateAfter3m: TDateTime;
dateNow: TDateTime;
begin
dateNow := Now();
dateBefore3m := Int(IncMonth(dateNow, -3)); //3か月前
dateAfter3m := Int(IncMonth(dateNow, 3)); //3か月後
if (CheckDate >= dateBefore3m) and (CheckDate <= dateAfter3m) then
Result := True
else
Result := False;
end;
TDateTime型はどうやらある年月日を基準に日数が整数部に加算されているような動きをしていたので、
現在の月を調べて3か月後の日数と3か月前の日数を割り出して判定するという方法を用いれば
ukさんが提示して下さったように自分で作成することができるのではないかと思いました。
大変助かりました。ありがとうございます。
ツイート | ![]() |