質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NTP

NTP (Network Time Protocol) とは、時計の時刻をネットワーク上のNTPサーバーの持つ正しい時刻に同期するためのプロトコルです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3221閲覧

NTPサーバ時間とPC時間のズレが検出できない

muhi_nurinuri

総合スコア1

NTP

NTP (Network Time Protocol) とは、時計の時刻をネットワーク上のNTPサーバーの持つ正しい時刻に同期するためのプロトコルです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/23 05:47

前提・実現したいこと

pythonでPC時刻とNTP時間のズレを検出したいです。
下記ソースコードで動いてはいるようですが、
結果として出力される数値が、0.1[s]以下となっています。
NICTの下記サイトによると、0.2[s]程度ズレているようで結果が異なっています。
https://www.nict.go.jp/JST/JST5.html

なぜNICTとズレが生じるのか教えてください。

発生している問題・エラーメッセージ

#結果 NTP time: 1637645700.328086 開始時刻: 2021-11-23 14:35:00.318136 終了時刻: 2021-11-23 14:35:00.362561 NTP時刻 : 2021-11-23 14:35:00.328086 ズレ時間: -0.00995016098022461

該当のソースコード

python

1from time import sleep 2from bs4.element import nonwhitespace_re 3import ntplib 4from datetime import datetime 5import time 6 7def get_ntp_time() -> datetime: 8 ntp_pool = 'ntp.nict.jp' 9 call = ntplib.NTPClient() 10 response = call.request(ntp_pool, version=3) 11 try: 12 # t = datetime.fromtimestamp(response.orig_time) 13 t = response.orig_time 14 return t # Use the time of the first NTP server that returns a time 15 except: # no response from server 16 pass 17 18#PC時間:start_time 19start_time = time.time() 20#NTP時間:now 21now = get_ntp_time() 22#PC時間:end_time 23end_time = time.time() 24 25#runat = datetime(now.year, now.month, now.day, now.hour, now.minute + 1, 0) # Arbitrary, put 8:30 here 26print("NTP time:", now) 27 28dl_t = start_time - now 29 30start_time = datetime.fromtimestamp(start_time) 31fomatted_time = start_time.strftime("%H:%M:%S.%f") 32 33end_time = datetime.fromtimestamp(end_time) 34fomatted_time = end_time.strftime("%H:%M:%S.%f") 35 36now = datetime.fromtimestamp(now) 37fomatted_time = now.strftime("%H:%M:%S.%f") 38print('開始時刻:',start_time) 39print('終了時刻:',end_time) 40print('NTP時刻 :',now) 41print('ズレ時間:',dl_t)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

NICTのサイトを見ると、

■本ページは正確な日本標準時の提供を目的としたものではありません。

通信回線の速度、混雑状況によっては、大きな誤差を生ずることがあります。

とありますので、そういうことなのではないかと思います。

投稿2021/11/23 06:50

TakaiY

総合スコア12745

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

muhi_nurinuri

2021/11/24 11:30

別回線で表示したものと比較すると、JSTとしてNICTのサイトで表示されているもの自体がズレていました。 おっしゃる通り、誤差が生じるようです。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問