« ルービックキューブ 尼崎オープン大会 2009 | トップページ | ブラック会社に勤めてるんだが、もう俺は限界かもしれない »

2009年3月25日 (水)

NTPの西暦2036年問題の日時について

まずは Wikipedia の NTPのページの「2036年問題」 の章を見てもらいたい。UTC(協定世界時)で「2036年2月6日 6時28分15秒」と書いてあると思う(2009年03月25日 現在)。JST(日本標準時)では「2036年2月6日 15時28分15秒」となる。
今度は RFC-4330 を見てもらおう。英語になるが、[Page 7] の2行目あたりに「6h 28m 16s UTC on 7 February 2036」すなわち UTC で「2036年2月7日 6時28分16秒」と書いてある。
現行の NTP ( Network Time Protocol ) で表現できる最終日が「2月6日」と「2月7日」と1日ずれているのだ。(1秒違うのは、15秒は最大値、16秒は最大値を超える値の違いである)。
結論を先に書くと、「2月7日」が正しい、ということである。
「2月7日」が正解なのだが、Web 上で検索すると、「2月6日」と書いているものが圧倒的に多い。こうなった経緯の真相は わからないが、ヒントとしては NICT の 公開NTP のページ の後半の『Tips』の『1. NTP時刻から「年月日」への変換』の『(b)(Excel等の)表計算ソフトの場合』を読めば、なんとなくわかると思う。

Windows版 の Excel での、もう少し一般的にした NTP時刻から「年月日」への変換方法を以下に書く。

・A1 にNTP時刻を入力し、A2 に日時(日本標準時)を表示させる例
(1) A列の列幅を「20」にする。
(2) A2に「=A1/86400+9/24+IF(A1>=5065200,2,1)」と式を入力する。
(3) A2の「セルの書式設定」の「表示形式」をユーザー定義で「yyyy/mm/dd hh:mm:ss」と指定する。
(4) A1にNTP時刻(1900年1月1日からの経過秒数)を入力する。
NTP時刻については、 NICT の 公開NTP のページ の『クライアント開発者向け情報(ガイドライン)』の表内のタイムスタンプが「NTP」となっている URL をクリックすると、現時刻のNTP時刻が取得できます。

最後に、ネットの世界では誤った情報が伝播されるのも、すごい勢いで広がるな、と怖いものを感じた。

|

« ルービックキューブ 尼崎オープン大会 2009 | トップページ | ブラック会社に勤めてるんだが、もう俺は限界かもしれない »

コメント

何度読み返しても
「わっ、かっ、らぁぁぁん」(エビ反り)。。

車の修理代たっかぁぁぁぁぁい。
誰かさんが北陸某温泉で一晩に使った金額を超
えました。やったぁ。(゚o゜)\Baki!

投稿: KSR | 2009年3月27日 (金) 16:37

日時から NTP時刻を求めるには、上記の Excelシートで以下のようにゴールシークを使って求めることが可能です。

[ツール(T)]-[ゴール シーク(G)] で、

数値入力セル: 「A2」
目標値:    「2010/10/14 23:59:59」(例)
変化させるセル:「A1」

と入力し <OK> をクリックする。
A1 に「3496057199」(NTP時刻の例) と解答が入り、A2 が「2010/10/14 23:59:59」(例) となります。
「解答が見つかりました。」という画面で、<OK> をクリックすると、A1 に「3496057199」(NTP時刻の例) と解答が入り、<キャンセル> をクリックすると、A1 がゴールシーク実行前の値に戻ります。

投稿: 本人 | 2010年10月14日 (木) 09:14

ちなみに、NTP時刻は「2036年02月07日 15時28分15秒」(JST) で終わりではなく、0 に戻って NTP時刻(32ビット分) の最上位ビットが 0 の場合は 2036年から2104年、最上位ビットが 1 の場合は 1968年から2036年、と 68年ごとに解釈を変更する仕様となっています。

上記の Excel シートの「A2」に入力する式は、扱う時刻範囲(年) により以下のように変化します。

1900年~2036年「=A1/86400+9/24+IF(A1>=5065200,2,1)」
1968年~2104年「=IF(A1<2^31,A1+2^32,A1)/86400+9/24+2」
2036年~2172年「=(A1+2^32)/86400+9/24+2」
2104年~2240年「=IF(A1<2^31,A1+2^33,A1+2^32)/86400+9/24+2」
   :    :

※ A1 の NTP時刻には、0 以上 4294967295 (=2^32-1) 以下の整数を入力のこと。

投稿: 本人 | 2010年10月14日 (木) 11:55

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/42597/44459450

この記事へのトラックバック一覧です: NTPの西暦2036年問題の日時について:

« ルービックキューブ 尼崎オープン大会 2009 | トップページ | ブラック会社に勤めてるんだが、もう俺は限界かもしれない »