代码之家  ›  专栏  ›  技术社区  ›  Naveed

php:当一个人达到某个特定的年龄时,如何约会?

  •  2
  • Naveed  · 技术社区  · 14 年前

    我正在做一项涉及日期的任务。我有一个 person's age in months+days . 现在我想知道这个人在几个月内达到特定年龄的日期。

    例如:

    A person is 250 months and 15 days old on 2010-1-25.
    On which date this person will become 300 months old? 
    

    函数签名可以是:

    function getReqDate( $startDate, $currAgeMonths, $currAgeDays, $reqAgeMonths  ) {
          //return date
    }
    
    5 回复  |  直到 12 年前
        1
  •  7
  •   Gordon Haim Evgi    14 年前

    因为您是从出生日期开始计算当前年龄的,所以我建议您也使用出生日期而不是当前年龄来计算用户何时年满300个月。以下是上面给出的日期时间解决方案的等效值(不需要5.3):

    echo date('r', strtotime('+300 months', strtotime('1990-10-13')));
    

    第二个参数是生日时间戳,上面会给出

    Tue, 13 Oct 2015 00:00:00 +0200
    

    进一步阅读:

        2
  •  4
  •   Daniel Egeberg    14 年前
    $date = new DateTime('1990-10-13');
    $date->add(new DateInterval('P300M'));
    echo $date->format('r');
    

    DateInterval 看看你是怎么写的。同样,需要php 5.3.0+。

        3
  •  0
  •   Nalum    14 年前

    使用PHP strtotime 函数可以获取您要查找的日期。例如

    strtotime('+50 months', mktime());
    
        4
  •  0
  •   Gabriel Solomon    14 年前
    function getReqDate( $startDate, $currAgeMonths, $currAgeDays, $reqAgeMonths  ) {
          $unixStartDate = strtotime($startDate);
          $dateBirth = strtotime("-$currAgeDays months", strtotime("-$currAgeMonths months", $unixStartDate));
          return strtotime("+$reqAgeMonths months", $dateBirth);
    }
    
        5
  •  0
  •   oezi    14 年前
    function getReqDate($startDate, $reqAgeMonths ) {
      list($year,$month,$day) = explode('-',$startDate);
      $date = date("Y-m-d", mktime(12, 0, 0, $month+$reqAgeMonths, $day, $year ));
      return $date
    }