如何使用PHP计算直到下一个生日的天数

时间:2015-10-12 18:26:34

标签: php html

我有2个输入字段用于出生日期。我想计算每个人的下一个生日的天数,并输入两个日期之间的差异以确定谁更老。我的语法是合乎逻辑的/我哪里出错?

{{1}}

3 个答案:

答案 0 :(得分:1)

您需要先转换它们。

In [55]: avg(lsit)
Out[55]: 273

它可能对你有帮助

答案 1 :(得分:1)

您的变体几乎是正确的。使用 format 显示日期之间的差异。就像例子

$origin = new DateTime('2009-10-11');
$target = new DateTime('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a days');

答案 2 :(得分:0)

public function days_to_birth(string $date) : int  {
    if(empty($date))          
    {
        return -1;
    }
    
    if($date == '0000-00-00') 
    {
        return -1;
    }

    $ts = strtotime($date.' 00:00:00');
    $bY = date('Y',$ts);
    $bm = date('m',$ts);
    $bd = date('d',$ts);

    $nowY = date('Y');
    $nowm = date('m');
    $nowd = date('d');

                            
    if($bm == $nowm && $bd >= $nowd)                        
    {
        return $bd - $nowd;
    }

    if( ($bm == $nowm && $bd < $nowd) || ($bm < $nowm) )
    {
        $nextBirth = ($nowY+1).'-'.$bm.'-'.$bd;
        $nextBirthTs = strtotime($nextBirth);
        $diff = $nextBirthTs - time();
        return floor($diff/(60*60*24));
    }

    if($bm > $nowm )                        
    {              
        $nextBirth = $nowY.'-'.$bm.'-'.$bd.'00:00:00';
        $diff = strtotime($nextBirth) - time();
        return floor($diff/(60*60*24));
    }

    return -1;                                      
}