2009年01月06日
コンピュータはうるう秒に対応しているか?

PHPの開発作業を行っている最中にちょっとRSSリーダを眺めていました。すると「うるう秒」(閏秒)に付いての記事があったのですが、その時に
「今使用しているCentOSはうるう秒に対応しているの?」
と疑問に思いました。
うるう秒についての細かいことはこちらを参照して頂くとして、時間調整のために2008年12月31日の23時59分60秒という通常ではあり得ない1秒が追加されました。
たった1秒なので生活にはそれほど影響はないのですが、コンピュータの処理上では時折影響が出る時があります。
そこで、現在使用しているCentOSはこのうるう秒に対応しているのかな?と思って簡単なプログラムを書いてみました。その結果は以下に。
テストを行ったOSはCentOS 5でプログラムはPHP 5で実施しました。
まずは2008年12月31日23時59分60秒はどうなのかというと、PHPでプログラムを書いてみました。
けど、もしかしたら日本時間は9時間の遅れがあるので2009年1月1日の8時59分60秒になるのかな?と思って下記のテストも行ってみました。
このプログラムが正しいのかちょっと疑問に感じますが、やっぱりうるう秒は対応していないようですね。
チャン♪チャン♪
【元ネタ】
はっぴぃ・りなっくす - UNIX time と うるう秒 - Linux - SmartSection
まずは2008年12月31日23時59分60秒はどうなのかというと、PHPでプログラムを書いてみました。
<?phpこの実行結果は
$time = "2008/12/31 23:59:59";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
$time = "2008/12/31 23:59:60";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
$time = "2009/01/01 00:00:00";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
?>
2008/12/31 23:59:59->Timestamp:1230735599 Time:2008/12/31 23:59:59見ての通り、うるう秒は考慮されていません。
2008/12/31 23:59:60->Timestamp:1230735600 Time:2009/01/01 00:00:00
2009/01/01 00:00:00->Timestamp:1230735600 Time:2009/01/01 00:00:00
けど、もしかしたら日本時間は9時間の遅れがあるので2009年1月1日の8時59分60秒になるのかな?と思って下記のテストも行ってみました。
<?phpこの結果は
$time = "2009/01/01 08:59:59";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
$time = "2009/01/01 08:59:60";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
$time = "2009/01/01 09:00:00";
$ts = strtotime($time);
echo $time."->Timestamp:".$ts.
" Time:".date("Y/m/d H:i:s", $ts)."\n";
?>
2009/01/01 08:59:59->Timestamp:1230767999 Time:2009/01/01 08:59:59となりました。
2009/01/01 08:59:60->Timestamp:1230768000 Time:2009/01/01 09:00:00
2009/01/01 09:00:00->Timestamp:1230768000 Time:2009/01/01 09:00:00
このプログラムが正しいのかちょっと疑問に感じますが、やっぱりうるう秒は対応していないようですね。
チャン♪チャン♪
【元ネタ】
はっぴぃ・りなっくす - UNIX time と うるう秒 - Linux - SmartSection
Category is コンピュータ全般.
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>
その様ですね。
今気がつきましたが、上記のプログラムの場合、1970年1月1日からの計算になるからPHP側の問題なのかな?
ちょっと自信なし(^^ゞ