CGIで西暦2000年が100年や19100年になるのですが
OSがサポートするstruct tmのtm_yearは西暦1900年からの経過年数が格納されています。 したがってperlのlocaltime()やgmtime()では西暦2000年には100を返すのが正常な動作です。このことを理解せずに誤用されたCGIスクリプトなどではこの誤りを正しく修正する必要があるでしょう。
例えば、次のような場合
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$yearを参照する前に $year += 1900;とするのが西暦を得る正しい方法です。 さらに西暦の下2桁を得たい場合は100で割った余りを利用します。
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$year %= 100;
if($year <10) { $year="0$year" ; }
これはあくまでも例ですので、それぞれのCGIスクリプトに応じて変更する必要があります。
なお、修正についてはご自身で行うか、CGIスクリプトの作成者や配布元などのサポート窓口にお問い合わせください。弊社ではお客様や第三者によって作成されたCGIスクリプトに関する問い合わせやサポートは一切行っておりませんのでよろしくお願いいたします。
参考:ホームページのCGIと2000年問題(INTERNET
Watch)
|