16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"nヶ月後の応答日を求める"
この発言に対し以下のコメントが寄せられています
#00135 UnC さん RE:nヶ月後の応答日を求める
解説
nヶ月後の応答を求めます。nヶ月後の月末処理は oracle の
Add_months と同じで例えば
10月 31日の 1ヶ月後は 11月 30日となります。
この function は 前述の Last_day が必要です。
function Add_Months(sdate:TDateTime;Cycle:Integer):TDateTime;
var
wday:TDateTime;
yyyy,mm,dd,end_yyyy,end_mm,end_dd:Word;
nen,tuki:Integer;
begin
DecodeDate(sdate,yyyy,mm,dd);
nen := Cycle div 12;
tuki := Cycle mod 12;
if (mm + tuki > 12) then
begin
yyyy := yyyy + 1;
mm := mm + tuki -12;
end
else if (mm + tuki <= 0) then
begin
yyyy := yyyy - 1;
mm := mm + tuki +12;
end
else
mm := mm + tuki;
yyyy := yyyy + nen;
wday := Last_Day(EncodeDate(yyyy,mm,1));
DecodeDate(wday,end_yyyy,end_mm,end_dd);
try
if end_dd < dd then
Result := EncodeDate(yyyy,mm,end_dd)
else
Result := EncodeDate(yyyy,mm,dd);
except
ShowMessage('日付が変換できません');
Result := sdate;
end;
end;
森井 忠重
Original document by 森井 忠重 氏 ID:(KYQ03515)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|