PHP の日付表現: 2038 年の制限を克服する
PHP のネイティブ日付関数には 2038 年での限界がありますが、代替アプローチもありますこの制限を超える日付を処理するには、そのようなアプローチの 1 つは、時、分、秒、およびミリ秒のコンポーネントを無視して、年、月、日のみを保存することです。
これらの追加の時間コンポーネントを破棄することで、表現可能な日付の範囲が大幅に広がります。これは、これらの各コンポーネントが、PHP によって内部的に使用されるミリ秒ベースの表現の一部を占めるためです。
DateTime クラスの利用
この目的のために、次のことができます。 DateTime クラスを使用します。日付関数とは異なり、DateTime は時間コンポーネントを独立して表します。 Unix タイムスタンプとタイムゾーンの組み合わせを使用して、日付を保存および追跡します。
$date = new DateTime(); $date->setDate(5000, 12, 31); echo $date->format('Y-m-d'); // Outputs "5000-12-31"
年、月、日の計算
DateTime クラスを使用すると、年、月、日のコンポーネントを個別に計算できます。たとえば、日付に 100 年を追加するには:
$date->add(new DateInterval(['y' => 100])); echo $date->format('Y-m-d'); // Outputs "5100-12-31"
このアプローチを使用すると、PHP のデフォルトの日付表現によって課される制限をはるかに超えて日付の計算を拡張できます。ただし、DateTime クラスは引き続きタイムゾーン コンテキストを維持するため、タイム ゾーンまたは時間の比較を伴う操作は依然として 2038 年の制限を受ける可能性があることに注意することが重要です。
以上がPHP での日付表現の 2038 年の制限を克服するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。