防止 PHP date() 默认为 12/31/1969

Posted

技术标签:

【中文标题】防止 PHP date() 默认为 12/31/1969【英文标题】:Prevent PHP date() from defaulting to 12/31/1969 【发布时间】:2010-02-08 19:01:59 【问题描述】:

我正在使用带有 phpmysql 数据库。我使用DATETIME 字段将我的日期值存储在数据库中。

我正在使用这个 PHP 代码将输入的日期转换为适用于 MySQL 的格式。

date("Y-m-d H:i:s", strtotime($inputDate))

但是,每当日期无效时,它就会以1969-12-31 19:00:00 的形式放入数据库中

有没有办法将其默认为 0000-00-00 00:00:00

【问题讨论】:

【参考方案1】:

只需使用strtotime() 的输出检测有效性,returns false on failure。

类似:

$time = strtotime($inputDate);
$date = ($time === false) ? '0000-00-00 00:00:00' : date('Y-m-d H:i:s', $time);

【讨论】:

【参考方案2】:

strtotime 返回 false,日期 eval 为 0。在检查 strtotime 是否返回 false 以防止出现这种情况之前:

$ts = strtotime($inputDate);

if ($ts === false)

//invalid date

else

echo date("Y-m-d H:i:s", $ts);

【讨论】:

以上是关于防止 PHP date() 默认为 12/31/1969的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中将默认时区设置为用户的本地时区? [复制]

为日期/时间函数设置默认时区(PHP5.3兼容性要求)

php hash防止表单

防止在 react-date-picker 中突出显示 Today

php.ini中date.timezone设置分析

php中的date和strtotime函数妙用