ホームページ > データベース > mysql チュートリアル > `strtotime()` を使用する場合、PHP で 1970 年より前の日付を処理するにはどうすればよいですか?

`strtotime()` を使用する場合、PHP で 1970 年より前の日付を処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-25 11:31:14
オリジナル
463 人が閲覧しました

How Can I Handle Dates Before 1970 in PHP When Using `strtotime()`?

strtotime() を使用して 1970 年より前の日付を操作する

問題:

日付を yyyy-mm-dd 形式で保存する MySQL データベースのテキスト列。 PHP コードは strtotime() を使用して日付を変換しますが、1970 年 1 月 1 日以降の値しか解析しないことがわかりました。日付の多くはこの制限より前にあるため、データベース構造を変更せずに回避策はないものかと考えています。

解決策:

公式 PHP ドキュメントでは、日付範囲の制限について強調しています。 strtotime():

Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT
ログイン後にコピー

オプション 1: PHP バージョンとオペレーティング システムをアップグレードする

可能であれば、PHP バージョン 5.1.0 以上にアップグレードします。拡張された日付範囲をサポートするプラットフォーム上で。

オプション 2: 使用するPHP の DateTime オブジェクト

strtotime() の範囲外の日付には DateTime オブジェクトを使用することを検討してください。これらにより、柔軟性が向上します。

手続き型アプローチ:

$date = date_create($row['value']);
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo "$error\n";
    }
    exit(1);
}

echo date_format($date, "F j, Y");
ログイン後にコピー

OOP アプローチ:

try {
    $date = new DateTime($row['value']);
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format("F j, Y");
ログイン後にコピー

以上が`strtotime()` を使用する場合、PHP で 1970 年より前の日付を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート