私はデスクトップアプリケーションを作成し、タイムスタンプに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. amazon sesリクエストのutc時刻を取得するにはどうすればよいですか?
- 6. 水平スクロールバーなしで正確な幅を取得するにはどうすればよいですか?
- 7. strtotimeを使用して現在のUTC時刻を正確に取得するにはどうすればよいですか?
- 8. リストボックスで正確なスクロール位置を取得するにはどうすればよいですか?
- 9. leveldbで正確なキー数を取得するにはどうすればよいですか?
- 10. 特定の時間間隔でファイルのバックアップを取得するにはどうすればよいですか?
- 11. 一意の時間間隔でレコード数を取得するにはどうすればよいですか?
- 12. SQL Serverストアドプロシージャの正確なタイミングを取得するにはどうすればよいですか?
- 13. Android - SeparatedListAdapter - onClickで正確なアイテムの位置を取得するにはどうすればいいですか?
- 14. JavaScriptのエポックから秒単位で時間を取得するにはどうすればよいですか?
- 15. デバイスの日付と時刻が正確でない場合、実際の日付と時刻を取得するにはどうすればよいですか?
- 16. 発信時間をリアルタイムで取得するにはどうすればよいですか?
- 17. SQL Statementで現在の日付+4時間を取得するにはどうすればよいですか?
- 18. UNIXでGMT時間を取得するにはどうすればよいですか?
- 19. 正確なバッテリーレベルを取得するにはどうすればいいですか?
- 20. コアダンプからシステム時間を取得するにはどうすればよいですか?
- 21. laravelのdatetimeから時間を取得するにはどうすればよいですか?
- 22. Pythonで24時間以上の時間値を扱うにはどうすればいいですか?
- 23. iPhoneで正確なGPS位置を取得する平均時間はどのくらいですか?
- 24. Cocoaを使用して現在の時間を取得するにはどうすればよいですか?
- 25. UTCをDateTimeに変換するにはどうすればよいですか?
- 26. iPhoneアプリケーションの起動にかかる時間を確認するにはどうすればよいですか?
- 27. 動画の再生時間を取得するにはどうすればよいですか?
- 28. 2つの日付オブジェクトの時間差を取得するにはどうすればよいですか?
- 29. アプリケーションの実行時間を取得するにはどうすればよいですか?
- 30. 予約済みアラームのスヌーズ時間を取得するにはどうすればよいですか?
モノスケッチでは、そのオフセットを記録し、アプリケーションの一部が時間を要求するたびにオフセットを適用するようにdatetimeライブラリメソッドを変更することができます。 timeとdatetimeのライブラリがこの種のオフセットを自動的に処理するなら、いいでしょう。あなたは実際の世界の時間を望んでいると言うことができます、それはNTPサーバーを打つ、オフセットを記録し、その時間が使用されるたびにそれを適用します。 –
これは、リクエストを行うための「往復時間」を考慮していません。あなたがしたいのは、 'time.clock()'を使って 'NTPClient()'が応答するまでの時間を測定し、それを半分に分割して指定した時間に追加することです。それは正確です。 –