12

Python のエポック開始時間はプラットフォームに依存しませんか (つまり、常に 1970 年 1 月 1 日)?

それともプラットフォーム依存ですか?

Python を実行しているさまざまなマシンで日時を (2 番目の精度で) シリアル化し、さまざまなプラットフォームでそれらを読み取ることができるようにしたいと考えています。エポック時間をシリアル化することは良い考えですか?

4

5 に答える 5

11

ドキュメントには次のように記載されています。

エポックとは何かを調べるには、 を見てくださいgmtime(0)

これは、特定のエポックが保証されていないことを意味すると解釈します。

この Python-Dev スレッドも参照してください。これは、実際にはエポックが常に 1970/01/01 であると想定されているが、これは言語によって明示的に保証されていないという考えを裏付けているようです。

この結果、少なくとも Python の場合、奇妙であいまいなプラットフォームを扱っていない限り、おそらくエポック時間を使用しても問題ないということです。Python 以外のツールで読む場合もおそらく問題ありませんが、さらに確実にするには、それらのツールが提供するドキュメントを読む必要があります。

于 2013-01-06T20:09:45.337 に答える
3

エポック時間 (UNIX 時間) は標準的な用語です。

http://en.wikipedia.org/wiki/Unix_time

Unix 時間、または POSIX 時間は、1970 年 1 月 1 日の協定世界時 (UTC) の午前 0 時から経過した秒数として定義されるインスタンスを表すためのシステムです。 [注 1] 閏秒はカウントされません。[注 2 ] Unix 系およびその他の多くのオペレーティング システムやファイル形式で広く使用されています。これは時間の線形表現でも、UTC の真の表現でもありません。

つまり、Python でエポック時間を使用すると、プラットフォーム間で一貫性が保たれます。一貫性を確保するための最善の策は、すべての場合に UTC を使用することです。

于 2013-01-06T20:06:47.487 に答える
1

Micropython のエポックは 1/1/2000です。 time()utimeを参照してください。

于 2017-01-07T21:11:38.187 に答える
1

time()は常にエポックからの時間を返します。ドキュメントを参照してください。

エポックは常に 1970 年からの秒数ですが、異なるマシンの時計は同じではないため、問題が発生する可能性があることに注意してください。

引用:

エポックとは、時間が始まる時点です。その年の 1 月 1 日の 0 時に、「エポックからの時間」はゼロです。Unix の場合、エポックは 1970 年です。エポックを調べるには、gmtime(0) を参照してください。

と:

time.time()¶

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

(どちらも Python ドキュメントから)。

于 2013-01-06T20:08:12.797 に答える