PHP:下次发生日期的年份

时间:2016-08-30 16:54:03

标签: php function date

我需要一个函数来返回从现在起第一次发生给定日期(日期+月)的年份。

function year($day, $month) {
  // ...
  return $year;
}

$day$year是两位数的数字

E.g。给定的日期是' 12/25'它应该返回' 2016' (或' 16'),但如果日期是' 25/25'它应该返回' 2017' (或' 17')。 [今天是2016年8月30日]

闰年可能会被忽视,输入也不必验证。

修改 我的尝试

year($day, $month) {

  $today_day = date('d');
  $today_month = date('m');

  $year = date('y');

  if($month > $today_month) {
    return $year;
  } else if ($month < $today_month) {
    return $year + 1;
  } else {
    if($day >= $today_day) {
      return $year;
    } else {
      return $year + 1;
    }
  }

}

2 个答案:

答案 0 :(得分:2)

只需比较您今天检查的日期。如果是今天或早些时候增加日期的年份。否则不要。然后回到那一年。

DateTime()功能使这很容易。

function year($day, $month) {
  $date  = new DateTime("{$month}/{$day}"); // defaults to current year
  $today = new DateTime();
  if ($date <= $today) {
      $today->modify('+1 year');
  }

  return $today->format('Y');
}

echo year(6, 6); // 2017
echo year(12, 12); // 2016

<强> Demo

答案 1 :(得分:1)

感谢您的努力!它非常好,但肯定可以使用一些微调。我们可以减少号码。不必要的if语句。

该函数接受两个参数:月份和日期。请确保我们在调用该功能时遵循该命令。

在函数中,$ date是与当前年份连接的输入日期。

例如:年(12,25)是指月份为12月(12),日期为25的年份。

年(12,25)将$ date作为2015-12-25。

 function year($month, $day) 
 { 
     $date= date('Y').'-'.$month.'-'.$day;
     if (strtotime($date) > time()) {
         return date('y');
     }
     return (date('y')+1);
 }

 echo year(12,25);   // 16

 echo year(2,25);    // 17

现在,我们需要做的就是使用当前时间戳()检查$ date的时间戳。

strtotime($ date)&gt; time()输入日期时间戳大于当前时间戳。这意味着今年的这个日期尚未到来。因此,我们返回当前年份日期(&#39; Y&#39;)。

如果上述if没有执行,很明显这个日期已经过去了。因此,我们将在明年返回日期(&#39; Y&#39;)+ 1