在PHP中,如果我有一个月的日子:
$day = 19;
如何才能获得下次出现的$day
,
function nextOccurrence($day) {
/// ???
return $date;
}
如果今天是2016-12-18
,那么nextOccurence(19)
明天应该返回(19)2016-12-19
。
如果今天是2016-12-19
或更高的12月日期,那么nextOccurence(19)
应该返回下个月的19th
,即2017-01-19
。
答案 0 :(得分:1)
您需要执行以下操作:
如果今天是< =从您想要的那天起,只需添加(今天 - 今天)天, 否则,在当天添加一个月并减去(今天 - 天)。
<?php
$day = 19;
echo nextOccurrence($day);
function nextOccurrence($day) {
$currentDay = date('d');
if ($day > $currentDay) {
// Get the timestamp of $day in this month
$date = strtotime('+' . ($day - $currentDay) . ' days');
} else {
// Get the timestamp of the current day in next month, and subtract the days difference
$date = strtotime('+1 month -' . ($currentDay - $day) . ' days');
}
return date('Y-m-d', $date);
}
?>
答案 1 :(得分:0)
请尝试以下代码:
echo '<br>Today is :' . date('Y-m-d');
echo '<br>Next day is : ' . date('Y-m-d',strtotime("+1 day"));
...谢谢
答案 2 :(得分:0)
要操作日期,请使用DateTime对象。
即使您是2008年2月28日,它仍然有效。
<?php
//Step 1
$date = new DateTime('2008-02-29'); //or new DateTime(date('Y-m-d')) for today
//Step2
$oneDay = new DateInterval('P1D')
//Step3
$date->add($oneDay);
//Step4 will return 1 (March 1st)
echo $date->format('d') . "\n";
找到下一次出现:
$nextOccurence = new DateTime();
while ($day != $nextOccurence->format('d')){
$nextOccurence->add($oneDay);
}
答案 3 :(得分:0)
试试这个,使用strtotime并添加1个月(如果月份是2月然后得到下个月的最后一天)并添加+1天。
function nextOccurrence($day) {
$date_d = date('d');
if ($date_d <= $day) {
if($date_d > 28)
{
$get_date = date("d-m-Y", strtotime("last day of next month"));
}
else
{
$get_date = date("d-m-Y", strtotime("+1 month"));
}
}
else
{
$stop_date = date('Y-m-d H:i:s', strtotime($get_date . ' +1 day'));
}
echo $stop_date;
}
<强> DEMO 强>
答案 4 :(得分:0)
请参阅以下代码:
function nextOccurrence($day) {
$today = date("d");
if ($today <= $day) {
return $retDate = date("d-M-Y", strtotime(date("Y-m-d") . '+1 month'));
} else {
return $retDate = date("d-M-Y", strtotime(date("Y-M-$d") . "+1 day"));
}
}
希望问题解决了。