本ブログは2009年4月21日で終了しました。
今後はアイビースターでブログを運営していますので
そちらをご覧ください。
Posted by Hibi at 12:00
コンピュータはうるう秒に対応しているか?


PHPの開発作業を行っている最中にちょっとRSSリーダを眺めていました。すると「うるう秒」(閏秒)に付いての記事があったのですが、その時に

 「今使用しているCentOSはうるう秒に対応しているの?」

と疑問に思いました。

うるう秒についての細かいことはこちらを参照して頂くとして、時間調整のために2008年12月31日の23時59分60秒という通常ではあり得ない1秒が追加されました。

たった1秒なので生活にはそれほど影響はないのですが、コンピュータの処理上では時折影響が出る時があります。

そこで、現在使用しているCentOSはこのうるう秒に対応しているのかな?と思って簡単なプログラムを書いてみました。その結果は以下に。

テストを行ったOSはCentOS 5でプログラムはPHP 5で実施しました。

まずは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



同じカテゴリー(コンピュータ全般)の記事
 
<%PingExcerpt%>
<%PingBlogName%> at <%PingDateTime%>
時刻はntpで常に合わせておかないとだめよ、ってことですね。
Posted by katsu2000x at 2009年01月06日 12:14
katsu2000xさん

その様ですね。
今気がつきましたが、上記のプログラムの場合、1970年1月1日からの計算になるからPHP側の問題なのかな?
ちょっと自信なし(^^ゞ
Posted by HibiHibi at 2009年01月06日 13:11
削除
コンピュータはうるう秒に対応しているか?