使用 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中文网其他相关文章!