2003年07月25日 (金)
自分の思い通りにならないと
ひらめかない日
年齢を正確に扱わないないと行けない処理がでてきたので、Date::Range::Birthで楽勝とか思ってたら。
1970以前の日付はよく考えたら扱えないのでした。(エポック秒が1970年からなため)
ので、いろいろめんどくさいことに。ひらめきましぇん。
とりあえずベタですが、後で日付の正当性のチェックが行われるので、境界線な年月日だけをチェックすることにしました。つまり、こんなカンジ。なんか、もっと綺麗にかけそうなものだけど。
#
# 年齢が120才以下であること
#
$self->valid->set_function(
AGE => sub {
my ($yyyy, $mm, $dd) = @_;
my $age = 120;
my ($now_yyyy, $now_mm, $now_dd) = (localtime())[5,4,3];
$now_yyyy += 1900;
$now_mm += 1;
#
# 範囲外
#
if ($now_yyyy > $yyyy and $yyyy < $now_yyyy - $age) {
return 0;
}
#
# 境界年(今年)
#
if ($now_yyyy '' $yyyy) {''
if ($now_mm '' $mm) {''
if ($now_dd < $dd) { return 0; }
else { return 1; }
}
elsif($now_mm > $mm) { return 1; }
elsif($now_mm < $mm) { return 0; }
}
#
# 境界年(過去)
#
if ($now_yyyy - $age '' $yyyy) {''
if ($now_mm '' $mm) {''
if ($now_dd > $dd) { return 0; }
else { return 1; }
}
elsif($now_mm < $mm) { return 1; }
elsif($now_mm > $mm) { return 0; }
}
return 1;
}
);
あと
my ($yyyy, $mm, $dd) = shift;
とやって、ずーっと動かないってはまったり。
今日はダメな日の様です。
あー。
とここまで作って、会社の同僚に指摘されて気がついたのだけど。日付の正当性は後で行うんだから、単純に。
文字列連結して数字で比較すれば、良かったのです。お馬鹿ちゃん。
$self->valid->set_function(
AGE => sub {
my ($yyyy, $mm, $dd) = @_;
my $age = 120;
my ($now_yyyy, $now_mm, $now_dd) = (localtime())[5,4,3];
$now_yyyy += 1900;
$now_mm += 1;
my $input = sprintf "%04d%02d%02d", $yyyy, $mm, $dd;
my $now = sprintf "%04d%02d%02d", $now_yyyy, $now_mm, $now_dd;
my $old = sprintf "%04d%02d%02d", $now_yyyy-$age, $now_mm, $now_dd;
return ($old <= $input and $input <= $now)? 1 : 0;
}
);
今日は、やっぱりダメな日です。
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)
恋愛観レベル
こんなんでました。先生なのかー。そんなことよりだれか紹介してくれ。とか思った。
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)
なっとくいかねー。
席替えはいんだけど、とりあえず俺ら4人は固めておけよ。なっとくいかねー。
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)
デジタル魔神倶楽部
デジタル魔神倶楽部、最後の飲み会というか懇親会というかなんというか。
今日は席替えもあってまだ片づいていないし、なんか今日はそんな気分でもないし、ウーロン茶で乾杯です。
で、さっさとセキに戻ってきてしまいました。
なんか、苦手。なんでだろう?
posted by takefumi
|
この日記へリンク
|
コメント(0)
|
トラックバック(0)

