问题:
//根据出生年月 计算年龄 $birthday = '0000-00-00'; $age = strtotime($birthday); if($age === false){ return false; } list($y1,$m1,$d1) = explode("-",date("Y-m-d",$age)); $now = strtotime("now"); list($y2,$m2,$d2) = explode("-",date("Y-m-d",$now)); $age = $y2 - $y1; if((int)($m2.$d2) < (int)($m1.$d1)) $age -= 1; 此段代码导致php warning异常 local.ERROR: A non-numeric value encountered
原因:
$age = strtotime('0000-00-00'); 等于负数导致
strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
此函数自 January 1 1970 00:00:00 GMT 起的秒数,也就是说strotime('1970-01-01 00:00:00')为0,当小于1970-01-01时 返回的结果为负数
注意:
PHP 5.1.0 之前,不是所有的平台都支持负的时间戳,那么日记范围就被限制为不能早于 Unix 纪元。这意味着在 1970 年 1 月 1 日之前的日期将不能用在 Windows,一些 Linux 版本,以及几个其它的操作系统中。