我要转换日期(从格里高利历到伊斯兰回历)。 PHP 7显示“非数字”警告错误。我该如何修改代码?
这是用于运行PHP 7.2和Apache的Linux服务器。它与PHP 5一样工作了!尝试过有关stackoverflow的建议,例如(intval)+(int),无济于事!
1510 $date = "25/1/1999";
1511 $Gdate = explode ('/', $date) ;
1512 $day = $Gdate[0];
1513 $month = $Gdate[1];
1514 $year = $Gdate[2];
1515
1516 $jgc=0;
1517 $m=$month;
1518 $y=$year;
1519 if($m<3)
1520 {
1521 $m=$m+12;
1522 $y=$y-1;
1523 }
1524 $c=floor($y/100.);
1525
1526 if($y==1582 && $m>10) {$jgc=10;}
1527 if($y>1582) {$jgc=2-$c+floor($c/4.);}
1528
1529 $jd= floor(365.25*($y+4716))+floor(30.6001*($m+1))+$day+$jgc-1524;
我希望它可以正常工作,并且不会产生以下错误: 警告:process.php中在第 1529
行遇到的非数字值答案 0 :(得分:1)
尝试在php 7.2.4上运行此代码没有错误,因此我认为它对您特定的php有所帮助。 在进行计算之前,尝试将变量转换为整数
$date = "25/1/1999";
$Gdate = explode ('/', $date) ;
$day = (int)$Gdate[0];
$month = (int)$Gdate[1];
$year = (int)$Gdate[2];
$jgc=0;
$m=$month;
$y=$year;
if($m<3)
{
$m=$m+12;
$y=$y-1;
}
$c=floor($y/100.);
if($y==1582 && $m>10) {$jgc=10;}
if($y>1582) {$jgc=2-$c+floor($c/4.);}
$jd= floor(365.25*($y+4716))+floor(30.6001*($m+1))+$day+$jgc-1524;
echo $jd;
答案 1 :(得分:-1)
问题是,您输入的是非数字值。
然后,我认为您的日期格式不正确。
我建议您使用DateTime()库来正确解析日期。