繁体   English   中英

PHP:下一次发生日期的年份

[英]PHP: year when a date occurs the next time

我需要一个函数,此函数从现在开始第一次出现给定日期(天+月)时返回年份。

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

$day$year是两位数字

例如,给定日期为“ 12/25”,则应返回“ 2016”(或“ 16”),但如果日期为“ 02/25”,则应返回“ 2017”(或“ 17”)。 [今天是2016年8月30日]

years年可能会被忽略,输入也不必经过验证。

编辑:我的尝试

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;
    }
  }

}

只需比较您今天要检查的日期即可。 如果是今天或更早,则增加日期的年份。 否则不要。 然后返回那一年。

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

演示版

感谢您的努力! 不错,但是可以使用一些微调功能。 我们可以减少编号。 不必要的if语句。

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

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

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

year(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

现在,我们要做的就是用当前的timestamp-time()检查$ date的时间戳

strtotime($ date)> time()输入日期时间戳大于当前时间戳。 这意味着这个日期还没有到今年。 因此,我们返回当前的年份日期('Y')。

如果不执行上述操作,则很明显该日期已过。 因此,我们返回下一年的date('Y')+ 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM