お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE^2:年齢計算・年月計算"

この発言は
#00047 Athena さんのRE:年齢計算・年月計算
に対するコメントです

#47 終了日が12月の時の処理が入ってなかったので、修正しますm(_ _)m 少し整理しました(^^; ResultType=0 は通常の年齢計算 ResultType=1 は経過年月(法律上の年齢計算)です。 ■コード //------------------------------------------------------- function GetAge(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 //ResultType=0 通常の年齢 begin if (Day1 > Day2) then Dec(Month2); end else begin //ResultType=1 経過年月(法律上の年齢) if (Month2=12) then begin if (Day2=31)then Inc(Year2);Month2:=1;Day2:=0; end else if E=EncodeDate(Year2,Month2+1,1)-1 then begin Inc(Month2);Day2:=0 ; end; if Day1 > Day2+1 then Dec(Month2); end; M:=Month2-Month1; Y:=Year2-Year1; case M of -12..-1 : begin Dec(Y); M:=12+M; end; end; if Y<=0then YearS:='' else YearS:=IntToStr(Y)+'年'; Result:=YearS + IntToStr(M)+ 'ヶ月'; except Messagedlg('値が不正です', mtwarning,[mbOK],0) ; end; end; //例 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetAge(StrToDate(Edit1.Text),Now,0)); //通常年齢 {ShowMessage(GetAge(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