年齢を計算するには?

解決


桜坂  2007-02-18 20:30:35  No: 24944

生年月日がEdit1に19550615と入っているとします。
例えば今日現在(20070218)の年齢をEdit2に年、Edit3に端数の月を計算する方法は、どうするのでしょうか。初心者です。教えてください。


ナニはなくともヘルプ  2007-02-18 20:52:50  No: 24945

ヘルプの「日付時刻ルーチン」参照


AY  2007-02-19 01:24:25  No: 24946

答えを聞く前に、先ずは調べてみられてはいかがでしょうか?
1.Google
2.「delphi 年齢計算」で検索
サンプル沢山  ヘルプ参照


桜坂  2007-02-19 05:23:59  No: 24947

皆さんご指摘ありがとうございました。


Fusa  2007-02-19 23:17:01  No: 24948

ぐぐったログを調べても
バグ混入ソースが見つかる場合があるから
改めて議論する価値はあったりするよ。

ということで、書いておきました。

DelFusaBlog 年齢計算
http://delfusa.blog65.fc2.com/blog-entry-42.html#more

5年も前だけど、MLのソースを仕事でつかってたら
誕生日がうるう日、2/29の人がいて
その人のデータみる時だけエラーをだし、システムがとまった。
っていうバグを見つけるのは
大変でしたよ。
現地まで訪問してさ...


HOta  2007-02-19 23:46:58  No: 24949

YearsBetween
という関数も有ります。


のかな?  2007-02-19 23:59:48  No: 24950

YearsBetweenのヘルプ

YearsBetween 関数は,2 つの指定された TDateTime 値の間にあるおよその年数を返します。

「およそ」というのがコンピュータらしくなくてイイ...


通りすがりん  2007-02-20 01:24:02  No: 24951

民法の規定では、日本人は誕生日の前日に年をとるはずです。
2/29生まれの人は2/28に、3/1生まれの人はうるう年では2/29に、それ以外は2/28に年をとるので、
法律上は閏日が誕生日って言う特殊状況は回避できるみたいです。
だから選挙権は選挙日の前日が誕生日の19歳(法律上は20歳だが)の人にも来るのです。


桜坂  2007-02-20 07:41:21  No: 24952

改めて皆さんありがとうございます。ちょっと、ホッとしました。
解決のチェックをしてしまいましたが、よかったら質問させてください。
私が見たサイトの場合、日付はTDateTime型となっており、string型やinteger型とは異なります。
TDateTime型に変換する関数として、StrToDate関数があるようですが、これは'2007/02/18'のように区切り文字を含む必要があるため、'19550615'や'20070218'のような場合には変換できないようです。
上手い解決方法はないでしょうか。教えて下さい。


AY  2007-02-20 08:02:38  No: 24953

Edit1に入っている文字列は、必ず8桁と決まっているのですね?
そうであれば、4,2,2に区切って編集してはどうでしょう

strtodate(copy(edit1.Text,1,4)+'/'+ copy(edit1.Text,5,2)+'/'+copy(edit1.Text,7,2))

桁数がまちまちであれば  問題ですが。


桜坂  2007-02-20 09:02:41  No: 24954

AYさん、遅い時間にもかかわらず、ご指導頂きありがとうございます。
何とか行けそうです。copyに、こんな記述方法があったんですね。勉強になりました。


Ru  2007-02-20 17:20:08  No: 24955

もしくはStringReplace関数を使用する手段もいいかもしれません。

x := StringReplace('2007/02/18', '/', '', [rfReplaceAll])
x の値は 20070218

ただし条件としては変換前の文字列の書式が YYYY/MM/DD である必要があります。


桜坂  2007-05-08 01:47:13  No: 24956

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加