• ベストアンサー

年令の計算方法

perl初心者です。入力フォーム内の生年月日から現在の年令を自動計算する方法を色々と探してみたのですが、良く判らないので質問させていただきました。 年項目:b_yesr 月項目:b_mon 日項目:b_day のテキストボックスに入力し、確認画面の年令項目:ageに計算結果を表示するにはどうすれば良いのでしょうか。 よろしくお願いいたします。

  • Perl
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • qtea
  • ベストアンサー率77% (38/49)
回答No.3

かなり手抜きですかが、下記のような感じで、どうでしょうか? ファイル名ge.cgiで。 入力内容のチェック等は行なっていないので、日付でないものが入力されたら、変な年齢が出ます^^ #!/usr/bin/perl use CGI; $b_year = &CGI::param("b_year"); $b_mon = &CGI::param("b_mon"); $b_day = &CGI::param("b_day"); $b_age = &calc_age($b_year, $b_mon, $b_day); print "Content-type: text/html\n\n"; print <<__EndOfHere__; <form action="age.cgi" method="POST"> Birthday:<input type="text" name="b_year" value="$b_year">/ <input type="text" name="b_mon" value="$b_mon">/ <input type="text" name="b_day" value="$b_day"> <input type="submit"> age:<input type="text" name="b_age" value="$b_age"> </form> __EndOfHere__ sub calc_age{ my ($b_year, $b_mon, $b_day) = @_; my ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time()); my $today = sprintf("%d%02d%02d", $year+1900, $mon+1, $mday); my $birthday = sprintf("%d%02d%02d", $b_year, $b_mon, $b_day); return int(($today - $birthday) / 10000); }

volvic2372
質問者

お礼

qtea様 お礼が遅くなり申し訳ありません。 参考にさせていただき頑張ってみます。 有難うございました。

その他の回答 (2)

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.2

ベタな方法で。 ・年、月、日それぞれについて、本日の値からフォームに入力された値を引きます。 ・日の計算結果がマイナスになったら月の計算結果を-1します。 ・月の計算結果がマイナスになったら年の計算結果を-1します。 ・この結果、年の計算結果が年齢になります。 例:本日(2006/10/03)と2000/10/10の誕生日との計算 日:03 - 10 = -7 … 月の計算結果を-1 月:10 - 10 - 1 = -1 … 年の計算結果を-1 年:2006 - 2000 - 1 = 5 …これが年齢になる

volvic2372
質問者

補足

bgbg様 有難うございます。 具体的な構文を教えていただけると助かるのですが…。 (年項目が間違ってました。正しくは、b_year です)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

年は西暦と言うことで。 現在の西暦-入力した西暦 をして、あとは月日が現在よりも前か後かでプラスマイナスをすれば出てきます。

volvic2372
質問者

お礼

moon_night様 有難うございます。

関連するQ&A

  • 生年月日を元に年齢を計算するテキストボックスを作成したのですが‥

    ACCESS 2003を使用しています。 プロパティシートのコントロールソース欄に計算式を入れ、フォームで生年月日を入力すると、確かにテキストボックスには年齢が自動計算されて表示されました。 ところが、カーソルが入ると自動計算された年齢が表示されるのですが、カーソルが次のボックスへ移動すると0になって表示されてしまいました。 書式の欄には「0歳」と入力してあります。 どの設定が間違っているのでしょうか。 わかる方、教えて下さい、お願いします。 説明不足は補足します。

  • 年齢の計算について

    いろいろ調べましたが、なかなか分からないので質問させていただきます。 エクセルのVBAでユーザーフォーム内にテキストボックスを3つ配置しました。 それぞれのテキストボックスは以下のようにしています。 テキストボックス1 基準日の入力 (2012/4/1 など) テキストボックス2 生年月日の入力 (1980/5/10 など) テキストボックス3 基準日での年齢を表示(自動表示) テキストボックス1、2に日付を入力した場合にテキストボックス3に年齢が自動で表示される といった内容です。 そこで、以下のようにプログラムしましたが、基準日を過ぎた日付をテキストボックスに入力して しまった場合にエラーになって止まってしまいます。 そこで、テキストボックス2にテキストボックス1の基準日を過ぎた日付を入れてしまったときに エラーメッセージがでるようにしたいのですが、どうすればよいでしょうか? また、文字などを入れてしまった場合には、エラーメッセージが出ますが、和暦(例:60/4/10) など入れてしまった場合にもエラーになり止まってしまいます。 このような場合(yyyy/mm/dd以外の入力の場合)にもエラーメッセージが出るようにするには どうすればよいでしょうか? Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) If TextBox2 = "" Then Exit Sub Else If Not (IsDate(Me.TextBox2)) Then MsgBox "日付を入力してください" & Chr(10) & "例(2002/4/1)", vbCritical TextBox2 = "" Cancel = True Exit Sub Else TextBox3.Value = Evaluate("datedif(""" & TextBox2.Value & """,""" & TextBox1.Value & """,""y"")") End If End If End Sub 何卒よろしくお願いします。

  • ACCESS2000での年齢計算(数え)

    こんにちは。お寺関係で仕事してます。 テキストボックスに生年月日を入力すると、 隣のテキストボックスに行年齢(数え歳)が 自動的に数値として入力されるようにしたい のですが、どうしたらいいでしょうか。 満年齢と違って、生まれた歳を1才とし 1月1日を迎えると2才になります。 例えば、6月に産まれた子供は、来年の 6月まで0才ですが、行年齢では産まれたとき 1才で、1月1日になると2才になります。 満年齢では8ヶ月であっても、行年齢では 2才になります。 今年で何歳?と聞かれたときに、誕生日が 来ていなければ+1歳ですが、来ていれば そのままですよね。誕生日が来ている、 いなに関わらず「今年で*歳」に+1歳が 行年齢になります。 何分お寺ですので、どうしても行年齢が 必要なわけです。 初心者ですが、是非教えてください。

  • Access2010 生年月日からの年齢計算

    Accessで、生年月日からの年齢計算についてですが、 下の図のように生年月日の年号、年、月、日をそれぞれコンボボックスにしてその入力した生年月日から年齢を求められるようにしたいのですが、どのようにしたら良いのでしょうか? どなたかご教授願います。 Windows7 Office2010Pro です。

  • ACCESS 除算での小数点切上げ方法

    こんにちは。 ACCESSを使った入力フォームにて、除算の自動計算を考えております。 テキストボックスAに入力された数値÷テキストボックスBに入力された数値  の結果をテキストボックスCに小数点切り上げで計算するにはどうしたらいいでしょうか? ご回答よろしくお願いします。

  • Excel2000で年齢計算したいのですが

    WindowsMeでExcel2000を使用しているものです。基準日と生年月日を入れると満年齢が自動計算されるようにしたいのですが、うまくDATEDIF関数が入力できず困っています。どなたかわかりやすく教えて頂けませんか?

  • Accessの関数について

    Accessのフォーム作成から氏名、生年月日、年齢といったかんじでデータを作成し、生年月日を入力したら年齢も自動的に表示されるようにしたいのですが、関数の定義がわからないので教えてもらえないでしょうか。 フォームのデザインビューからプロパティ→年齢のテキストボックスを指定し、テキストボックス年齢のプロパティが開かれます。コントロールソースの項目からビルドボタンをクリックすると、式ビルダが開かれます。生年月日の表示方式は 生年月日 1999/09/09 といった表示方法をとっています。Excelだと、datedif関数で、 datedif("生年月日","2002/10/1","y")で年齢を算出できたので、もしかしたらAccessでも定義できるんではないかと思いまして質問いたしました。

  • アクセスについての質問です

    アクセスについて、次の項目について教えてください。 1.テーブルからフォームを作り、後でテーブルのフィールドの属性を変えた場合(たとえば、テキスト ボックスからコンボボックス等)、フォームにこれ が対応しません。対応させる方法はありますか。 2.アクセスでデータベースを開いたときに希望のフォームが最初に自動的に開くように設定したいので すが、どのようにすればよいでしょうか 3.生年月日を入力したらそれが自動的に年齢になるような背低は可能でしょうか。(フリガナ入力支援 のような) たくさん質問して恐縮ですが、分かるものだけでもけっこうですのでご回答よろしくお願いします

  • エクセルで生年月日から現在の年齢を計算する関数はないですか?

    エクセル95か2000でかまわないのですが、生年月日から現在の年齢を自動的に計算する関数は何かないでしょうか? たとえば、あるセルに生年月日を入力しておきます。行に2002年10月、11月、12月・・・と入力しておき、それぞれ2002年10月、11月、12月の年齢が、生年月日から計算されて参照されるような関数です。

  • アクセス 式ビルダの使い方

     アクセス初心者です。いまいち式ビルダの使い方がわからないので教えてください。    フォーム画面にて、テキストボックスに入力した値を計算させて、テキストボックスに計算値を自動に入力するようにしたいです。 テキストボックス1*テキストボックス2のような、式を作り(例えです)テキストボックス3に計算値を反映したいです。    式ビルダでできるでしょうか?教えてください。

専門家に質問してみよう