西暦表示を2000年にするには

[上に] [前に] [次に]
弥生 2000/01/01(土) 08:17:43
私のHPで使用しているCGIですが、1つだけ2000年の表示にならなかったものがあります。
100年になってしまいました。

$Date = sprintf( "%d/%02d/%02d %02d:%02d:%02d", grep( ++$i==2?++$_:1, reverse((localtime time)[0..5]) ) );

この部分でよろしいんでしょうか?
よろしくお願いします。

B-Cus 2000/01/01(土) 10:46:00
技巧に凝ったつもりかもしれんけど、わかりにくいだけのコードだなぁ。
この作者の流儀でいくなら
  sprintf("%d/%02d/%02d %02d:%02d:%02d",
     grep {$i==0?$_+=1900:0;++$i==2?++$_:1} reverse((localtime time)[0..5]));
ですけど、素直に
  ($sec,$min,$hour,$day,$mon,$year) = localtime(time);
  $Date = sprintf("%d/%02d/%02d %02d:%02d:%02d",
                  $year+1900,$mon+1,$day,$hour,$min,$sec);
とした方がいいでしょう。

弥生 2000/01/01(土) 15:55:09
[[解決]]
どうもありがとうございました。
無事に2000年表示になりました。
助かりました。

mm 2000/01/01(土) 20:57:59
>技巧に凝ったつもりかもしれんけど、わかりにくいだけのコードだなぁ。
こんなコードを書くのは私だけかな…?(笑い)
私の流儀でいくなら
$Date = sprintf( "%d/%02d/%02d %02d:%02d:%02d",
    grep( ++$i==1?$_+=1900:$i==2?++$_:1, reverse((localtime time)[0..5]) ) );
下2桁に拘るなら、
$Date = sprintf( "%02d/%02d/%02d %02d:%02d:%02d",
    grep( ++$i==1?$_=~s/\d*(\d\d)/$1/:$i==2?++$_:1, reverse((localtime time)[0..5]) ) );

ということで、100よりは2000の方が見やすそうなので、更新しました。
http://www2s.biglobe.ne.jp/~cru/library/zddbbs/lq.html

弥生 2000/01/02(日) 00:11:22
制作者の方ですね?
そちらで聞くべきなんですが、お答えしていただけないだろうと思いまして。
ついでに申しますと、findmod.cgiとこれは使ってませんが、count.cgiも100年になります。
B-Cusさんの解答を参考にして訂正しました。
どれも自分で確認するだけなので、支障はありませんが。

mm 2000/01/02(日) 02:20:38
>ついでに申しますと、findmod.cgiとこれは使ってませんが、count.cgiも100年になります。
ご指摘ありがとうございます。また、更新の機会にでも直すようにします。

[上に] [前に] [次に]