首页 >数据库 >mysql教程 >在 PHP 中使用'strtotime()”时如何处理 1970 年之前的日期?

在 PHP 中使用'strtotime()”时如何处理 1970 年之前的日期?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-25 11:31:14426浏览

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