2

1708年から今日までの2つの日付の間の数十年を計算する必要があります-私が収集できる限りの制限は、PHPネイティブ関数内の1970/1901です。

誰かアドバイスできますか?

ありがとう!

4

3 に答える 3

3

PHP> = 5.3.0を使用している場合:

$before  = new DateTime('1708-02-02');
$decades = $before->diff(new DateTime())->y / 10;
于 2010-02-02T15:05:25.557 に答える
2

Zend_Dateを使用できます。これは Zend Framework の一部ですが、スタンドアロンで使用できます。使用するためにフレームワーク全体をインストールする必要はありません。bcmath拡張機能が PHP にインストールされている場合は、1901 年以降の日付でも機能します。Zend_date の操作理論から:

Zend_Date は UNIX タイムスタンプや整数値に限定されていないため、これは可能でした。1901 年 12 月 13 日金曜日 20:45:54 GMT から 2038 年 1 月 19 日火曜日 03:14:07 GMT の範囲外の非常に大きな日付をサポートするには、BCMath 拡張機能が必要です。BCMath 拡張機能を使用しない限り、float データ型と丸めの固有の制限により、追加の小さな数学エラーが発生する可能性があります。

Zend コンポーネントはよく手入れされた高品質のコードであるため、お勧めします。ただし、これには他の解決策があります。たとえば、mySQL 日付関数を使用します。

于 2010-02-02T14:08:33.197 に答える
0

カスタムメソッドを書きます。

PHP の日付関数はエポック (1969) に基づいているため、あまり役に立ちません。

簡単な計算である年を見るだけなら

より高い年 - 以前の年 = 年 年 / 10 = 十年。

偶数の 01-10、11-20 から数十年を意味する場合は、丸めを行うことができます。(早い日付を切り上げ、後の日付を最も近い 10 に切り捨てます。

于 2010-02-02T14:10:42.053 に答える