我需要一个函数来返回从现在起第一次发生给定日期(日期+月)的年份。
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;
}
}
}
答案 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 。