41

あまりにも基本的な質問をして申し訳ありませんが、ドキュメントを読んだ後にクリアできませんでした。ここで基本的なことを見逃しているか、誤解しているようです。

time.time()異なるタイムゾーンから同時に呼び出すと、異なる結果が得られますか? epochこれは、ドキュメント (およびインターネットでのそれほど深くない検索) で、タイムゾーンについて言及されていない の定義に帰着する可能性があります。

また、タイムゾーンが異なる場所から time.time() が呼び出され、datetimeそれらのマシンで UTC に変換された場合、それらはすべて同じ UTC 時間を与えるでしょうか?

4

6 に答える 6

22

はい、指定されていないエポックtime.time()からの秒数を返します。ほとんどのシステムではうるう秒は含まれないことに注意してください。ただし、うるう秒を含むようにシステム クロックを設定することは可能です。cpython では、C 関数への呼び出しとして実装されます。これは、 C 標準の §27.23.2.4.2 に従って、指定されたエポックを使用する必要はありません。time.timetime

このtime関数は、現在のカレンダー時間を決定します。値のエンコーディングは指定されていません。

事実上すべての OS (Linux、Mac OSX、Windows、およびその他すべての Unix を含む) では、エポックは1970-1-1, 00:00 UTCであり、これらのシステムtime.timeではタイムゾーンに依存しません。

于 2012-08-07T12:22:57.243 に答える
4

UNIX エポックへの秒単位のオフセットであるため、戻り値は同じである必要があります。

そうは言っても、異なるタイムゾーンを使用して Date に変換すると、もちろん値は異なります。

これらの日付からそれぞれを UTC に変換すると、結果は同じになります。

于 2012-08-07T12:23:33.070 に答える
3

ドキュメントごと:

エポックからの秒数を浮動小数点数で返します。時間は常に浮動小数点数として返されますが、すべてのシステムが 1 秒よりも優れた精度で時間を提供するわけではないことに注意してください。この関数は通常、減少しない値を返しますが、システム クロックが 2 つの呼び出しの間に戻された場合、以前の呼び出しよりも低い値を返すことがあります。

ウィキペディアは「Unix epoch」について次のように述べています。

Unix エポックは、1970 年 1 月 1 日の 00:00:00 UTC (または 1970-01-01T00:00:00Z ISO 8601) です。

そしてそれは続く

この定義には問題があります。UTC は 1972 年まで現在の形式では存在しませんでした。この問題については以下で説明します。簡潔にするために、このセクションの残りの部分では ISO 8601 日付形式を使用します。この形式では、Unix エポックは 1970-01-01T00:00:00Z です。

時間と日付は楽しいです。

あまり知られていない事実: 1894 年以前のスイスのタイム ゾーンは 34:08 (34 分 8 秒) でした。1894 年 6 月以降は 29:44 に更新されました。(リンク)

于 2012-08-07T12:23:54.657 に答える
3

time.time()UNIX エポックが 1970 年 1 月 1 日 0:00 UTC に始まってからの秒数を返します。マシンのクロックが正しく設定されていると仮定すると、すべてのマシンで同じ値が返されます。

于 2012-08-07T12:22:16.640 に答える
1

ドキュメントから:

このモジュールで定義されているほとんどの関数は、同じ名前のプラットフォーム C ライブラリ関数を呼び出します。これらの関数のセマンティクスはプラットフォームによって異なるため、プラットフォームのドキュメントを参照すると役立つ場合があります。

http://docs.python.org/library/time.html?highlight=time.time#module-time

したがって、答えは次のとおりです。

于 2012-08-07T12:21:48.650 に答える