*おまけ*スクリプトのカスタマイズ。
[home][setsumei][log1][log2][log3][log4][log5]

Y2Kの修正

ちまたで見る2000年問題の修正です。
利用しているスクリプトに2000年問題を含んでいるものがあれば、GetDateAndTimeというサブルーティンがないか調べてみてください。
オリジナルのGetDateAndTimeサブルーティンは以下のようになっています。
 
sub GetDateAndTime
{
    local ($sec, $min, $hour, $mday, $mon);
    local($year, $wday, $yday, $isdst);
    local ($ampm, $currentdatetime);

($sec, $min, $hour, $mday, $mon, 
 $year, $wday, $yday, $isdst) =
    localtime(time);
$mon++;
$ampm = "AM";
$ampm = "PM" if ($hour > 11);
$hour = $hour - 12 if ($hour > 12);
if (length($min) == 1)
{
    $min = "0" . $min;
}

"$mon/$mday/$year $hour:$min $ampm";

} # End of GetDateAndTime
 

年号を2000表示にする
$year += 1900;
でも大丈夫。
同じことをしています。
sub GetDateAndTime
{
    local ($sec, $min, $hour, $mday, $mon);
    local($year, $wday, $yday, $isdst);
    local ($ampm, $currentdatetime);

($sec, $min, $hour, $mday, $mon, 
 $year, $wday, $yday, $isdst) =
    localtime(time);
$mon++;
$ampm = "AM";
$ampm = "PM" if ($hour > 11);
$hour = $hour - 12 if ($hour > 12);
if (length($min) == 1)
{
    $min = "0" . $min;
}

$year = $year+1900;

"$mon/$mday/$year $hour:$min $ampm";

} # End of GetDateAndTime
 

Perl の中の$yearには1900年を0として数えた年号が入っていまので、2000年表示にするためには、1900を足す必要があります。
2000年表示にするためには、上の太字の1行を加えるだけで大丈夫です。
年号を00表示にする
$year = $year - 100;
if ($year<=9){
$year = "0$year";
}else{$year=$year;}

でも大丈夫。
同じことをしています。
(もう少し簡潔にもなる。)

sub GetDateAndTime
{
    local ($sec, $min, $hour, $mday, $mon);
    local($year, $wday, $yday, $isdst);
    local ($ampm, $currentdatetime);

($sec, $min, $hour, $mday, $mon, 
 $year, $wday, $yday, $isdst) =
    localtime(time);
$mon++;
$ampm = "AM";
$ampm = "PM" if ($hour > 11);
$hour = $hour - 12 if ($hour > 12);
if (length($min) == 1)
{
    $min = "0" . $min;
}

$year = $year-100;
if ( $year == 0 ) { $year = "00"; }
elsif ( $year <= 9 ) {$year = "0"."$year"; }
else { $year = $year; }

"$mon/$mday/$year $hour:$min $ampm";

} # End of GetDateAndTime

 

00表示にするためには、100(2000年)から100を引いて、その数字が1から9の場合には冒頭に"0"を文字的な添え字として追加する必要があります。(0の場合も同じ。上の例では、0の場合は、"00"に変換している。)2010年以降(Perlの年号では、110年。100を引いて10年)は、100を引いたそのまんまで大丈夫です。($year = $yearと、定義しておく。)もっと簡潔な書き方もあると思いますが以上の書き方が説明にそっていると思います。
BBS_FORUMの中にあるサブルーティンなんだけどなぁ。読んでてくれるかなぁ。
戻る
[Matt'sIP][Matt's削除][ログの取り方]
Hosted by www.Geocities.ws

1