電子書籍の厳選無料作品が豊富!

perl初心者です。入力フォーム内の生年月日から現在の年令を自動計算する方法を色々と探してみたのですが、良く判らないので質問させていただきました。

年項目:b_yesr
月項目:b_mon
日項目:b_day

のテキストボックスに入力し、確認画面の年令項目:ageに計算結果を表示するにはどうすれば良いのでしょうか。
よろしくお願いいたします。

A 回答 (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);
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/06 12:53

ベタな方法で。



・年、月、日それぞれについて、本日の値からフォームに入力された値を引きます。
・日の計算結果がマイナスになったら月の計算結果を-1します。
・月の計算結果がマイナスになったら年の計算結果を-1します。
・この結果、年の計算結果が年齢になります。

例:本日(2006/10/03)と2000/10/10の誕生日との計算
日:03 - 10 = -7 … 月の計算結果を-1
月:10 - 10 - 1 = -1 … 年の計算結果を-1
年:2006 - 2000 - 1 = 5 …これが年齢になる

この回答への補足

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

補足日時:2006/10/03 13:55
    • good
    • 0

年は西暦と言うことで。


現在の西暦-入力した西暦
をして、あとは月日が現在よりも前か後かでプラスマイナスをすれば出てきます。
    • good
    • 0
この回答へのお礼

moon_night様
有難うございます。

お礼日時:2006/10/03 14:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!