16

PHP はミリ秒を使用して日付を表すという性質上、2038 年を過ぎた日付を表すことはできないことを理解しています。遠い将来の日付を計算したいという問題があります。何千年も離れています。

明らかに、制限のためにphp日付関数を使用してこの日付を表すことはできませんが、私は何かを持っています...私がしたいのは、年、月、日を保存することだけです。時間、分、秒、ミリ秒は気にしません。

多くの情報を破棄しても構わないと思っているので、この追加情報を含めなくても、将来のことをもっと計算できるはずだという考えは正しいでしょうか。これは現在これを行うライブラリですか?そうでない場合、この問題に取り組む方法について何かアドバイスはありますか?

4

5 に答える 5

26

DateTime代わりに、時間コンポーネントを内部的に個別に表すクラスを使用することもできます。したがって、2038 年の制限の影響を受けません (::getTimestamp を使用しない限り)。

于 2011-03-16T00:43:35.900 に答える
8

64 ビット プラットフォームを使用できます。

整数のサイズはプラットフォームに依存しますが、最大値は約 20 億が通常の値です (符号付き 32 ビット)。通常、64 ビット プラットフォームの最大値は約 9E18 です。

ソース

プラットフォームが 64 ビットであることを確認しますvar_dump(PHP_INT_SIZE === 8)。の場合TRUE、システムは 64 ビットです。

于 2011-03-16T00:44:12.600 に答える
2

PHP は、この問題を解決するためにバージョン 5.2 でDatetime()クラスを導入しました。ただし、まだ 64 ビット OS である必要があります。

于 2011-03-16T00:42:59.013 に答える
1

PHP では 2038 年を超える日付をネイティブに処理できないという点で、あなたは正しいです。ただし、浮動小数点が 64 ビットであるという事実を利用するこのようなライブラリがあり、必要に応じてこの問題を回避できます。(すべて 32 ビット システムを使用していることを前提としています... 64 ビットを使用している場合は問題ありません)。

于 2011-03-16T00:38:00.077 に答える