13

私はデスクトップ アプリケーションを作成しdatetime.datetime.utcnow()、タイムスタンプに使用していましたが、最近、アプリケーションを使用している一部の人々が、プログラムを同時に実行した場合とは大きく異なる結果を得ることに気付きました。urllib を使用して Web サイトから UTC 時刻を取得せずにローカルで UTC 時刻を取得する方法はありますか?

4

2 に答える 2

24

Python は、基礎となるオペレーティング システムに依存して、正確な時刻クロックを提供します。そうでない場合は、o/s をバイパスする以外に選択肢はありません。ここには、NTP クライアントの純粋な Python 実装があります。非常に単純なアプローチ:

>>> import ntplib,datetime
>>> x = ntplib.NTPClient()
>>> datetime.datetime.utcfromtimestamp(x.request('europe.pool.ntp.org').tx_time)
datetime.datetime(2009, 10, 21, 7, 1, 54, 716657)

ただし、他の NTP サーバーに継続的にアクセスするのはあまり良いことではありません。善良なネット市民は、ntp クライアント ライブラリを使用して、o/s システム クロックとサーバーから取得したクロックとの間のオフセットを追跡し、定期的にポーリングして時刻を調整するだけです。

于 2009-10-21T06:45:09.493 に答える
7

実際、ntplib はラウンドトリップ遅延を考慮してこのオフセットを計算します。これは、NTP 応答の「オフセット」属性を通じて利用できます。したがって、結果はそれほど乱暴ではありません。

于 2009-11-11T14:29:05.600 に答える