web-dev-qa-db-ja.com

Pythonのtime.time()タイムゾーンは特定ですか?

基本的な質問をしてしまったことをお詫びしますが、ドキュメントを読んだ後、それをクリアすることができませんでした。ここでは、基本的なことを見逃しているか、誤解しているようです。

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

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

35
0xc0de

はい、 time.time() は、指定されていないEpochからの秒数を返します。ほとんどのシステムでは、これにはうるう秒が含まれていません含まれていませんが、 システムクロックを構成してうるう秒を含めることができます 。 cpythonでは、time.timeはC関数timeの呼び出しとして実装されます。これは、 C標準 の§27.23.2.4.2に従って、指定されたエポックを使用する必要はありません。

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

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

19
phihag

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

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

それらの日付から、それぞれをUTCに変換する場合、結果は同じである必要があります。

4
pcalcao

ドキュメント ごと:

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

ウィキペディアは「 nixエポック 」について述べています:

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

そしてそれは続く

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

日時は楽しいです。

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

3
RobB

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

2
Wooble

ドキュメントから:

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

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

だから答えは:それは異なります。

1
user647772