3

「誕生日」フィールドを含むドキュメントがあり、これも 01-01-1970 より低い値を持つことができます。どうすればこれを処理できますか? 例えば

{....
    'birthday' => newMongoDate(strtotime('31/10/1968')),
 ....
}

これにより、「誕生日」の値が作成されます: 「1/1/1970 12:00:00 AM」(DateTime)

4

3 に答える 3

0

これは、UNIX タイムスタンプが 1970 年 ( http://php.net/manual/en/function.strtotime.php )strototimeからカウントされるためです。1901年から行くことがstrtotimeできますが、次のことに注意してください。

タイムスタンプの有効な範囲は通常、1901 年 12 月 13 日金曜日 20:45:54 UTC から 2038 年 1 月 19 日火曜日 03:14:07 UTC までです。(これらは、32 ビット符号付き整数の最小値と最大値に対応する日付です。) さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲が Unix エポックより前に制限される場合があります。これは、たとえば、1970 年 1 月 1 日より前の日付は、Windows、一部の Linux ディストリビューション、およびその他のいくつかのオペレーティング システムでは機能しないことを意味します。ただし、PHP 5.1.0 以降のバージョンでは、この制限が解消されています。

そのため、システムが単にエポックより前の日付をサポートしていないという問題が発生している可能性が非常に高くなります。

@nickが言うようDateTime()に、代わりに、より具体的には独自のtimestamp機能を使用できます:http://www.php.net/manual/en/datetime.gettimestamp.php

于 2013-05-29T09:40:12.113 に答える
-1

私が考えることができる唯一のオプションは、ネストされた Date オブジェクトを次のように使用することです

birth_date : {
  year : 1968,
  month : 10,
  day : 31
}

もちろん問題はありますが、Windows ユーザーにとってはこれが唯一の選択肢です。

于 2013-05-29T09:07:22.880 に答える