NICT 公開 NTP サービス対応クライアントリスト
NICT 公開 NTP サービス対応クライアント募集中
「NICT 公開 NTP サービスに対応」とは、 デフォルトの時刻サーバにNICTのサーバが設定されているクライアントです。
設定を変更することなく、日本標準時に同期することができます。
クライアント名* | プラットホーム | NTP | http | https | 一言アピール |
---|---|---|---|---|---|
太助時計 | Windows 95/98/Me/2000/Xp | ○ | ○ | 高精度です | |
ピッタリでチュ! | ○ | ○ | |||
Donut Q | Windows 95/98/98SE/Me/ NT4/2000/XP/Vista |
○ | × | 国産の超高速タブブラウザです |
クライアント開発者向け情報(ガイドライン)
- ポーリング間隔は1時間平均で20回(あるいは1日平均で480回)を越えないようにしてください( FAQにもあります)
- 本サービスでは複数台のNTPサーバを、1つのサーバ名(ntp.nict.jp)で提供しています。
メンテナンス等により、いくつかのサーバが一時的に利用できない場合がありますが、ntp.nict.jp
で名前解決される 全てのIPアドレスを参照することにより、信頼性を向上させることができます。例えば、
ntpdの"pool"コマンドやOpenNTPDの"servers"コマンド("server"ではなく「複数形の"s"が付いています」)
などの実装が知られています。
- https/http を介してアクセスされる場合、次のURLをご利用ください。
各種タイムスタンプ(NTP/POSIX/JSON/JSONP/時分秒形式)を文字列で提供しています。
いずれのサービスも、ヘッダ中に"Access-Control-Allow-Origin:*"を含みます。
なお、現在は試行中ですので、不具合がございましたらご連絡ください。
(*2)TZ:タイムゾーン(一覧)
例えば、
http://ntp-a1.nict.go.jp/cgi-bin/time?Europe/Paris (パリ)
http://ntp-a1.nict.go.jp/cgi-bin/time?America/New_York (ニューヨーク)
RFC-4330 "Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI" の第10章 "Best Practice"を参考にしてください。
その他の一般的な注意事項
NICT NTPクライアントコンテスト
2006年にコンテストを開催しました。
次回の開催は検討中です。
Tips
■1. NTP時刻から「年月日」への変換
(a) C の場合
NTP時刻とPOSIX時刻のオフセット(2208988800秒)を補正してからctime()等を使用する。
#include <stdio.h> #include <time.h> main() { unsigned long ntptime; time_t posixtime; posixtime = (time_t)(ntptime - 2208988800UL); printf("%s\n", ctime(&posixtime)); }
(b)(Excel等の)表計算ソフトの場合
例えば、NTP時刻が 3429398305.823 の場合、セルに次のような計算式[*]を入れます。
=(3429398305.823)/86400 +2 +9/24このままでは単に数字「39694.49」が表示されますが、セルの書式を「日付」にして、書式コードを YYYY/M/D H:MM:SS にすれば次のように表示されます。
2008/9/3 11:38:26[*] 表計算ソフトウェアは起点となる日(エポック)からの日数でカウントするので、経過秒数を1日分の秒数86400で割れば、経過日数を得ることができます。
また、小数点以下が時分秒を表しますがntp時刻は協定世界時ですので日本標準時にするために、"+9/24" を加えて9時間進めます。一方、"+2" は日数修正項で、日時やソフトウェアに依存します[**]。
[**] 例えば、同じMicrosoft社のExcelでも、Windows版とMacintosh版ではデフォルトのエポックが異なっています。更に1900/1/1をエポックとしたソフトウェアでは、1900年を非閏年として扱うために、1900/3/1以降とその前で修正項を "+2" あるいは "+1" の切替を必要とする場合(VisiCalc, Lotus 1-2-3, Windows版Excelなど)があります。
(c) gnuplot の場合
gnuplot のエポックは 2000/1/1(MJD 51544)。
set xdata time set timefmt "%m/%d/%y %H" # xrange 指定用フォーマット set xrange ["09/21/06 15":"09/21/06 21"] # timefmt での xrange 設定 set format x "%Y/%m/%d\n%H:%M:%S" # x-軸表示のフォーマット set xtics 60 set xlabel "JST" p 'datafile' u ($1-314106400+9*3600):2
■2. JSONP形式時刻情報の利用
・JSONP 形式時刻情報の概要
http://ntp-a1.nict.go.jp/cgi-bin/jsont?1232963971.248
上記のURLでサーバにアクセスすると、次のような文字列が返されます。
jsont( { "id": "ntp-a1.nict.go.jp",
"it": 1232963971.248,
"st": 1232963971.920,
"leap": 33,
"next": 1230768000,
"step": 1 } )
それぞれの値の意味は、次の通りです。
id: "ntp-a1.nict.go.jp" サーバID
it: 1232963971.248 発信時刻(クライアントから送信された時刻)
st: 1232963971.920 サーバ時刻
leap: 33 next 以前の時点での UTC と TAI の差(秒)
next: 1230768000 次、または最後のうるう秒イベント時刻
step: 1 次、または最後のうるう秒イベントが挿入の場合 1、削除の場合 -1
コールバック関数 jsont(json) 中では、json["id"]、json["it"]、json["st"]にそれぞれ、"ntp-a1.nict.go.jp"、1232963971.248、1232963971.920 が入ることになります。
なお、時刻表記は UNIX Time(POSIX仕様) で、少数以下3桁(ミリ秒まで)となっています。
また、クライアントからの発信時刻を使わない場合は、URLの"?"以下は省略できます。
・JSONP 形式時刻情報の利用方法
下の html ファイルを sample.html に保存し、Web ブラウザで実行してみてください。
alert ウィンドウがポップアップし、サーバ ntp-a1.nict.go.jp から供給された時刻が表示されます。<html> <head> <script type="text/javascript"> function jsont(json) { var tm = new Date( json["st"] * 1000 ); alert( tm.toLocaleString() ); } </script> <script type="text/javascript" src="http://ntp-a1.nict.go.jp/cgi-bin/jsont"> </script> </head> </html>「日本標準時表示ページ(JSONP版)」では、リクエストの送信時刻とサーバ時刻、レスポンスの到着時刻の3つから、ローカルクロックとサーバ時刻との差を推定しています。
また、複数のサーバにアクセスすることにより、取得した時刻情報のチェックおよび、平均化による時刻誤差低減を行っています。
この改行は必要→