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 年の制限の影響を受ける可能性があることに注意することが重要です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3