16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"拡張EncodeDate関数"
この発言に対し以下のコメントが寄せられています
#00813 Satobe さん RE:拡張EncodeDate関数
こんにちわ、みなさん
EncodeDate関数が、Excelのような -20月や+20月ができないので
拡張してみました。
uses SysUtils;
function EncodeDateEx(year, month, day: integer): TDateTime;
var
v: word;
begin
if Abs(month) > 12 then
begin
v := month div 12;
month := month mod 12;
year := year + v;
end;
if month < 1 then
begin
year := year - 1;
month := 12 + month;
end;
Result := EncodeDate(year, month, 1);
Result := Result + (day - 1);
end;
使用方法
var
y,m,d: integer;
dt: TDateTime;
begin
//0日にすると前月の月末が得られる
dt := EncodeDateEx(1999, 3, 0); //dt = 1999/2/28
dt := EncodeDateEx(2000, 3, 0); //dt = 2000/2/29
//上の応用、今月の月末を得る
DecodeDate(Now(),y,m,d);
dt := EncodeDateEx(y, m + 1, 0);
DecodeDate(dt, y, m ,d); //d = 今月の末日
//nヶ月後を得る
n := -20;
DecodeDate(Now(), y, m, d);
dt := EncodeDateEx(y, m + n, d);
end;
by むすす
Original document by むすす 氏 ID:(BYH12101)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|