[英]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.