16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"年齢計算・年月計算"
この発言に対し以下のコメントが寄せられています
#00047 Athena さん RE:年齢計算・年月計算
//年齢(or 経過年月)を月まで計算します
{ function GetYears(S,E: TDateTime; ResultType:Integer):String;
パラメータ 説明
S : TDateTime 誕生日or 開始年月日
E : TDateTime 終了年月日
ResultType : Integer 年齢の時 0 経過年月 1 }
function GetYears(S,E: TDateTime; ResultType:Integer):String;
var
YearS:String;
Year1,Month1,Day1,Year2,Month2,Day2:Word;
Y,M:Integer;
begin
Result:='';
try
DecodeDate(S,Year1,Month1,Day1);
DecodeDate(E,Year2,Month2,Day2);
if ResultType=0 then
begin // ResultType=0 は年齢計算
if Day1 > Day2 then //年齢 例:平成5年2月15日生まれは
Month2:= Month2-1; // 平成6年4月15日で1才2ヶ月
end
else
begin
if Day1 > Day2+1 then //経過年月 例:平成5年2月15日から
Month2:= Month2-1; // 平成6年4月14日で1年2ヶ月
end;
M:= Month2 - Month1;
Y:= Year2 - Year1;
case M of
-12..-1: begin Dec(Y); M:= 12 + M; end;
end;
if M = 12 then
begin
Inc(Y); M:=0;
end;
if Y <= 0 then
YearS:= ''
else YearS := IntToStr(Y) + '年';
Result:= YearS + IntToStr(M)+ 'ヶ月';
except
Messagedlg('値が不正です', mtwarning,[mbOK],0) ;
end;
end;
{使用例:Edit1にyyyy/mm/dd 形式で値を入れてButton1Click}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetYears(StrToDate(Edit1.Text),Now,0)); //現在の年齢
{ShowMessage(GetYears(StrToDate(Edit1.Text),Now,1)); //現在までの経過}
end;
なんか、整理されていないような気もしますが・・(^^;
_/_/ Athena ( VYH00522 ) _/_/
Original document by Athena 氏 ID:(VYH00522)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|