首頁  >  文章  >  資料庫  >  在 PHP 中使用「strtotime()」時如何處理 1970 年之前的日期?

在 PHP 中使用「strtotime()」時如何處理 1970 年之前的日期?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-25 11:31:14409瀏覽

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

使用strtotime() 處理1970 年之前的日期

問題:

你有一個MySQL 資料庫中的文字列,以yyyy-mm-dd 格式儲存日期。您的 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版本和作業系統

如果可能,升級到等於或大於5.1.0 的 PHP 版本在支援擴充日期範圍的平台上。

選項 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");

以上是在 PHP 中使用「strtotime()」時如何處理 1970 年之前的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn