【问题标题】:How do I calculate a user's age given a date of birth?给定出生日期,如何计算用户的年龄?
【发布时间】:2019-01-29 17:45:15
【问题描述】:

我需要根据客户表计算年龄取决于生日。

这是我的代码:

// customer age
function calculate_customer_age($startDate,$endDate){
    $endDate=date(m-d-y);
    $startDate= $customer['birthday'];
    $fromDate= new DateTime($startDate);
    $toDate= new DateTime($endDate);
    echo $fromDate->diff($toDate)->days;
}

在最后一行,我需要回显年龄计算取决于从MySQL 的客户表中检索。

【问题讨论】:

  • 运行代码时会发生什么?错误?结果错误?顺便说一句,您可以完全删除 $endDate 变量。如果你只是做$toDate = new DateTime(),你会得到当前日期。
  • 不确定是不是拼写错误,但date(m-d-y) 应该是date('m-d-y')
  • 你想通过这段代码实现什么?

标签: php


【解决方案1】:

您可以在函数中使用以下代码,该代码将计算到今天的年龄。您可以修改 $today 以使用您想要的结束日期和格式。

$dateOfBirth = $customer['birthday'];
$today = date("Y-m-d");
$diff = date_diff(date_create($dateOfBirth), date_create($today));
echo 'Age is '.$diff->format('%y');

【讨论】:

    【解决方案2】:

    您的代码中有很多错误。无需在函数中传递结束日期。您可以使用以下代码获取年龄。

    function calculate_customer_age($startDate){
        $fromDate = new DateTime($startDate);
        $toDate       = new DateTime('today');
        return $fromDate->diff($toDate)->days;
           // or return $fromDate->diff($toDate)->y;
    }
    
    echo calculate_customer_age($customer['birthday']);
    

    【讨论】:

      【解决方案3】:

      您的calculate_customer_age 函数中有几个错误,您可以使用以下代码来获取两个日期之间的天数差异:

      function calculate_customer_age($startDate, $endDate)
      {
          $startDate = DateTime::createFromFormat("m/d/Y", $startDate);
          $endDate = DateTime::createFromFormat("m/d/Y", $endDate);
          return $startDate->diff($endDate)->days;
      }
      
      echo calculate_customer_age("11/30/2008", "08/23/2018"); // 3553
      

      文档:

      【讨论】:

        【解决方案4】:

        PHP >= 5.3.0

        面向对象

        $from = new DateTime('1970-02-01');
        $to   = new DateTime('today');
        echo $from->date_diff($to)->y;
        

        程序

        echo date_diff(date_create('1970-02-01'), date_create('today'))->y;
        

        MySQL >= 5.0.0

        SELECT TIMESTAMPDIFF(YEAR, '1970-02-01', CURDATE()) AS age
        

        【讨论】:

          【解决方案5】:

          如果您想以天为单位计算客户的年龄,您应该这样做:

          function calculate_customer_age($startDate){
                  $fromDate= new DateTime($startDate);
                  $toDate= new DateTime();
                  $difference = $fromDate->diff($toDate)->days;
                  return $difference->format('%a');
          }
          

          【讨论】:

            【解决方案6】:

            php代码

            $startDate = '05-01-1988'; // sample start date or dob
            $end_Date = '23-08-2018'; // smmple end date
            
            echo calculate_customer_age( $startDate , $end_Date ); 
            

            返回年龄的php函数-

            function calculate_customer_age( $startDate , $endDate ) //function returns age   
            {   
                $diff = date_diff( date_create( $startDate  ), date_create( $endDate ) );
                return $diff->format('%y Years, %m Months, %d Days');
            }
            

            样本输出:

            30 年 7 个月 18 天

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-22
              • 1970-01-01
              • 2011-05-02
              相关资源
              最近更新 更多