这是我的代码: -
foreach ($this->data['age'] as $row) {
$nepali_date = strtotime($row['mem_birth_date']);
$english_date = strtotime("-56 years -8 months -16 days", $nepali_date);
$date = date("Y/m/d", $english_date);
$now = date($now);
$age = ($now - $date);
if ($age >= "18" && $age <= "24") {
$i++;
}
if ($age >= "25" && $age <= "29") {
$j++;
}
if ($age >= "30" && $age <= "39") {
$k++;
}
if ($age >= "40" && $age <= "49") {
$l++;
}
if ($age >= "50" && $age <= "59") {
$m++;
}
var_dump($row['mem_birth_date']);
var_dump($nepali_date);
var_dump($now);
var_dump($date);
var_dump($age);
}
当$ row [&#39; mem_birth_date&#39;]大于2037年$ nepali_date结果为boolean false。你能告诉我问题和解决办法吗?
答案 0 :(得分:3)
我不认为有任何上限是为函数中字符串的长度定义的。如果字符串格式不正确,那么strotime将返回false。
来自manual: -
注意:强>
时间戳的有效范围通常来自1901年12月13日星期五 20:45:54 UTC to Tue,20 Jan Jan 03:14:07 UTC。(这些是日期 对应于32位带符号的最小值和最大值 整数。)此外,并非所有平台都支持负时间戳, 因此,您的日期范围可能不会早于Unix 时代。这意味着,例如1970年1月1日之前的日期将无效 在Windows上,一些Linux发行版,以及其他一些操作系统 系统。 PHP 5.1.0和更新的版本克服了这个限制。
对于64位版本的PHP,时间戳的有效范围是 有效无限,因为64位可以代表大约293 两年十亿年。
您还可以参考其他一些解决方案:
或者你可以试着像这样使用Datetime:
$date = new DateTime('@'.$obj->date);
echo $date->format('Y-m-d H:i: sP') ."";