[Tokyo.pm] 恥ずかしながらしくじりました。
Tetsuya Ryuchi
ryuchi @ ryuchi.org
2000年 1月 5日 (水) 01:30:06 CST
りゅうちと言います。
> こんなことをして、ミレニアム・バグをばら撒いてしまいました。
(snip)
> ($sec,$min,$hr,$dd,$mm,$yy,$week,$days,$isDST) = localtime();
> if ($yy >70)
> {
> $yy = "19".$yy;
> }
> else
> {
> $yy = "20".$yy;
> }
あらら... 対応方法を間違ってしまった様ですね.
1900年ずれた年が 戻り値になるので 素直に 1900 を足して計算していれば
良かったのに...
# もしかしたら 1900 を足しているだけのコードを y2k 非対応と思って、
# 2000年以降 2000 を足すコードを書いている人もいるかもね...
#
# if ( $yy > 70 ) { $yy += 1900; } else { $yy += 2000; }
#
# とか... しかし これだったら y2k バグが発覚することはなかったのね....
吉野さんのコードだと 数値で評価したあとに 文字列連結して 文字列に変換
させる様なコードになっていますね。 1桁とか 2桁とか 自分で判断するより、
sprintf の様な 書式付きの print 文で変換させた方が 小さくて 読みやすいと
思いますが...
たとえば
$yy += 1900;
$ret = sprintf( "%04d%02d", $yy, $mm );
と書いた方が簡単ではありませんか?
(龍)
--
# From Tetsuya Ryuchi <ryuchi @ ryuchi.org> or <ryuchi @ hoge.org>
# Powered By FreeBSD 3.4-RELEASE
Tokyo-pm メーリングリストの案内