私はデスクトップアプリケーションを作成し、タイムスタンプにdatetime.datetime.utcnow()
を使用していましたが、私は最近、プログラムを使用している人の中には、 urllibを使用せずにUTC時刻をローカルから取得する方法はありますか?Pythonで正確なUTC時間を取得するにはどうすればよいですか?
答えて
Pythonは、正確な時刻クロックを提供するために基礎となるオペレーティングシステムに依存しています。それをしていない場合は、o/sをバイパスする以外の方法はありません。純粋なPython実装のNTPクライアントhereがあります。非常にシンプルなアプローチ:
>>> 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システムクロックとサーバーから取得したものとの間のオフセットを追跡し、時間を調整するために定期的にポーリングするだけです。
実際には、ntplibは、この往復遅延を考慮したオフセットを計算します。 NTP応答の "offset"属性によって利用可能です。したがって結果はあまりにも激しくはありません。
これは役に立つコメントですが、答えではありません。上記のコメントに移動してください。 – jfs
私は、OPの観察(非常に異なる結果)が間違っているかもしれないような形で答えを与えると思います。そして、誰が原子時計を持たずにローカルでUTC時間を取得したいのですか? – Trilarion
@トルリオン:異なるコンピュータが別の時間を返すという珍しいことはありません。たとえ[時間がntpを使って同期されていれば;それはインターネット上の数十ミリ秒で異なるかもしれません](http://stackoverflow.com/a/97939/4279)。ミリ秒、マイクロ秒の精度でUTC時間を取得するにはローカルの原子時計は必要ありません(これは数十ナノ秒の精度が必要な場合はリアルタイムではわかりません)、GPSを使用することができます(例:同じntpソフトウェア)。規模について:[相対論的効果は1日あたりマイクロ秒である](http://www.astronomy.ohio-state.edu/~pogge/Ast162/Unit5/gps.html) – jfs
- 1. PythonでUTC時間を取得するには?
- 2. PythonプロセスのCPU時間を正確に測定するにはどうすればよいですか?
- 3. 2時間の間に数時間を取得するにはどうすればよいですか?
- 4. Visual C++でユーザー時間とsys時間を取得するにはどうすればよいですか?
- 5. UTC時刻をjava.sql.Timestampにするにはどうすればよいですか?
- 6. 水平スクロールバーなしで正確な幅を取得するにはどうすればよいですか?
- 7. amazon sesリクエストのutc時刻を取得するにはどうすればよいですか?
- 8. strtotimeを使用して現在のUTC時刻を正確に取得するにはどうすればよいですか?
- 9. リストボックスで正確なスクロール位置を取得するにはどうすればよいですか?
- 10. leveldbで正確なキー数を取得するにはどうすればよいですか?
- 11. NotificationCompat.Builder、addActionで正確なインテントを取得するにはどうすればよいですか?
- 12. 一意の時間間隔でレコード数を取得するにはどうすればよいですか?
- 13. 特定の時間間隔でファイルのバックアップを取得するにはどうすればよいですか?
- 14. ソケット送信の送受信間の正確な経過時間を取得するにはどうすればよいですか?
- 15. Parse dateカラムに現在のUTC時間をアップロードするにはどうすればよいですか?
- 16. SQL Serverストアドプロシージャの正確なタイミングを取得するにはどうすればよいですか?
- 17. Matlabプロットのx軸で正確な時間ラベルを取得するにはどうすればよいですか?
- 18. アプリがフォアグラウンドにないときに、Windowsユニバーサルで正しい時間間隔を取得するにはどうすればよいですか?
- 19. Android - SeparatedListAdapter - onClickで正確なアイテムの位置を取得するにはどうすればいいですか?
- 20. reactjsでJsDocの正確なエラーメッセージを取得するにはどうすればいいですか?
- 21. iOSで正しい現在時刻を取得するにはどうすればよいですか?
- 22. utcの時間ディスプレースメントを日付時間文字列から正しく変換するにはどうすればよいですか?
- 23. JavaScriptのエポックから秒単位で時間を取得するにはどうすればよいですか?
- 24. Ubuntu ServerでMonoでシステムの稼働時間を取得するにはどうすればよいですか?
- 25. GolangでUTC時間のタイムスタンプを取得するには?
- 26. Python:1から10の間で入力を取得するにはどうすればよいですか?
- 27. Tweepyから正しい日時を取得するにはどうすればよいですか?
- 28. デバイスの日付と時刻が正確でない場合、実際の日付と時刻を取得するにはどうすればよいですか?
- 29. Pythonのutc datetimestringから正しい時刻を取得する方法は?
- 30. 発信時間をリアルタイムで取得するにはどうすればよいですか?
モノスケッチでは、そのオフセットを記録し、アプリケーションの一部が時間を要求するたびにオフセットを適用するようにdatetimeライブラリメソッドを変更することができます。 timeとdatetimeのライブラリがこの種のオフセットを自動的に処理するなら、いいでしょう。あなたは実際の世界の時間を望んでいると言うことができます、それはNTPサーバーを打つ、オフセットを記録し、その時間が使用されるたびにそれを適用します。 –
これは、リクエストを行うための「往復時間」を考慮していません。あなたがしたいのは、 'time.clock()'を使って 'NTPClient()'が応答するまでの時間を測定し、それを半分に分割して指定した時間に追加することです。それは正確です。 –