我的数据库中有几个空白的DATETIME值(0000-00-0000:00:00)。
每当我通过strtotime运行它们时,它们返回“1263247058”而不是FALSE,它应该根据链接页面上的信息执行:
PHP strtotime() outputs nothing
怎么回事?
感谢。
答案 0 :(得分:3)
正如docs for strtotime
中的一条评论所说,“strtotime("0000-00-00")
返回的值因PHP版本而异”。因此,最好对该特定值进行额外检查。
答案 1 :(得分:1)
为什么在其他答案中解释了。此代码将强制该值为false:
if ($db_datetime == 0) {
$unix_timestamp = false;
} else {
$unix_timestamp = strtotime($db_datetime);
}
答案 2 :(得分:1)
许多PHP函数在内部依赖于标准C库实现,这可能是strtotime()的情况。这意味着确切的行为取决于PHP运行的操作系统。
我认为最好不依靠strtotime()来检测无效日期。
作为旁注......我猜你正在使用MySQL。可以对其进行配置,使其不接受无效日期:
答案 3 :(得分:0)
适合我:\
$ php -r 'var_dump(strtotime("0000-00-00 00:00:00"));'
bool(false)
$
mac OS上的PHP 5.2.8,以及CentOS 5.2上的PHP 5.2.5。你能尝试相同的测试吗?如果结果不同,您使用的是哪个版本的PHP,以及哪个平台?
FWIW,我觉得你完全可以通过在数据库中存储一个实际的NULL而不是零日期来避免这种情况。
答案 4 :(得分:0)
考虑以下代码的输出(PHP Version 5.3.0):
echo date( "h:i:sa m/d/Y", strtotime( '00:00:00' ) ) . "<br/>" ;
echo date( "h:i:sa m/d/Y", strtotime( '00:00:00 00-00-0000' ) ). "<br/>" ;
// Output
12:00:00am 01/12/2010
12:00:00am 01/01/1970