php中strtotime函数的坑
|
问题: //根据出生年月 计算年龄 $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("-",$now)); $age = $y2 - $y1; if((int)($m2.$d2) < (int)($m1.$d1)) $age -= 1; 此段代码导致php warning异常 local.ERROR:Anon-numericvalueencountered 原因: $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 版本,以及几个其它的操作系统中。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
