PHP日期的问题 - 的strtotime不输出什么是应该?
题
我有几个坯DATETIME值(0000-00-00 00:00:00)的我的数据库中。
每当我运行那些通过的strtotime,他们返回“1263247058”,而不是FALSE,它应根据链接页面上的信息做的事:
为什么?
感谢。
解决方案
许多PHP函数内部依赖标准C库实现,并很可能,这是的strtotime的情况下()。这意味着,准确行为取决于操作系统PHP上运行上。
我认为这是最好不要依靠的strtotime()来检测无效的日期。
作为一个侧面说明...我相信你正在使用MySQL。它可以配置它,所以它不会接受无效日期:
其他提示
如在文档为strtotime
说的评论之一,“通过strtotime("0000-00-00")
返回的值由PHP版本而异”。所以,这是更好地做特定值的额外的检查。
怎么进来的其他答案解释。此代码将值强制为false:
if ($db_datetime == 0) {
$unix_timestamp = false;
} else {
$unix_timestamp = strtotime($db_datetime);
}
考虑下面的代码的输出(PHP版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
适用于我:\
$ php -r 'var_dump(strtotime("0000-00-00 00:00:00"));'
bool(false)
$
在Mac OS,以及在CentOS 5.2 PHP 5.2.5 PHP 5.2.8。你可以尝试同样的试验?如果结果出现不同的,你使用的是什么版本的PHP,以及哪个平台?
FWIW,这让我感到,你可以通过在数据库中,而不是零日期存储的实际NULL完全避免这种整个局势。
不隶属于 StackOverflow