PHP mktime() 用于 1900 年之前的日期

标签 php datetime mktime

所以我正在研究这个按几十年对日期进行排序的系统。我正在使用 make times,并且一切正常,直到 1900 年或以下。之后所有内容都会返回 1964 年 12 月 24 日类型的日期。其他人能告诉我为什么会发生这种情况以及可能的解决方案吗?

其代码:

//$decades is a string ex: '1950-1960'

$decade_array=explode('-',$decades);

$date_active=date("M-d-Y", mktime(0, 0, 0, 1,1 , trim($decade_array[0]) ));
$date_inactive=date("M-d-Y", mktime(0, 0, 0, 1, 1, trim($decade_array[1]) ));

echo $date_active.' '.$date_inactive;

最佳答案

尝试使用DateTime类:

$date = new DateTime("1234-01-01");
echo $date->format("M-d-Y"); // outputs Jan-01-1234

DateTime 类自 PHP 5.2 起可用。

如果您有 PHP 5.3,请使用 DateTime::createFromFormat :

$date = DateTime::createFromFormat('Y-m-d', "1234-01-01");
echo $date->format("M-d-Y");

关于PHP mktime() 用于 1900 年之前的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845456/

相关文章:

php - 使用 js 文件名调用 javascript 函数

php - 如何使用 PHP 检查 XML 标签是否为空?

MySql - 在 select 语句中选择前一行以比较时差的最佳方式?

Google表格中带有时区的日期时间?

php - 使用日期时间获取结果

php - 通过 mktime 查找所有月份

c - 我是否使用了 tm/mktime 错误,如果没有,是否有解决方法?

php - 调用 Javascript 函数,无需任何按钮即可在 PHP 中触发它

php - 我应该使用排队系统来处理付款吗?

c# - 尝试插入日期时间时 MySQL 出错