05
,那么输出将为2017-07-05
因为已经过了选择日期12
,则输出将2017-06-12
导致此日期未来日期我累了,但没有工作
$today = date("Y-m-d");
$next_payment_date = date('Y-m-d', strtotime('+1 month', $today));
或
$time = time();
date("Y-m-d", mktime(0,0,0,date("n", $time),date("j",$time)- 1 ,date("Y", $time)));
谢谢你的提前
答案 0 :(得分:2)
还有一个选择:
$input = 12;
$day = date("d");
if ($input > $day){
$date = date("Y-m-"). str_pad($input,2,"0", STR_PAD_LEFT);
}else{
$date = date("Y-m-",strtotime("+1 month")). str_pad($input,2,"0", STR_PAD_LEFT);
}
echo $date;
我使用str_pad来保存两位数的日期。
答案 1 :(得分:2)
试试这个 -
<?php
$day = '05';
$today = date('Y-m-d');
$supplied = date('Y-m-'.$day);
if($today>$supplied){
$final = date('Y-m-d', strtotime("+1 months", strtotime($supplied)));
}
else{
$final = $supplied;
}
echo $today;
echo '<br />';
echo $supplied;
echo '<br />';
echo $final;
我在这做什么 -
比较当前和提供的日期
根据比较,如果提供的日期较小,我加上1个月的时间,而不是提供日期。
答案 2 :(得分:0)
使用此,
$today = date('Y-m-d');
$nextDate = date('Y-m-d', strtotime('+1 month'));
or $nextDate = date('Y-m-d', strtotime('+1 month', strtotime($today));
答案 3 :(得分:0)
我认为这可能会有所帮助。
我会考虑使用DateTime
及其add
方法来DateInterval
。
$date = new \DateTime('now', new \DateTimeZone('America/New_York'));
$interval = new \DateInterval('P1M');
$date->add($interval);
Here是受支持的DateTimeZone
值。确保将其设置为适用的时区。
编辑:
DateTime
是可变的,所以请记住这一点。
答案 4 :(得分:0)
试试这段代码:
<?php
$selected_date = '2017-06-05';
$current = date('Y-m-d');
//echo $current;
if($selected_date < $current)
{
$newDate = date('Y-m-d',strtotime($selected_date."+1 month"));
echo $newDate; // gives 2017-07-05
}else if($selected_date > $current)
{
$newDate = $current;
echo $newDate; // gives 2017-06-07
}
?>
答案 5 :(得分:0)
根据您在问题开头的要点中所描述的,您可以通过这种方式实现:
$selectedDate = new DateTime('2016-06-05 00:00:00');
$now = new DateTime('now');
$now->setTime(0, 0, 0);
if ($selectedDate < $now) { // Selected date is in past
// Set month and year to current
$selectedDate->setDate(
date('Y'),
date('m'),
$selectedDate->format('d')
);
// Add 1 month
$selectedDate->add(new DateInterval('P1M'));
}
// If selected date is current or in future we do nothing
echo $selectedDate->format('Y-m-d');
对于输入2017-06-05
,它将按预期返回2017-07-05
,对于当前或将来的日期,将返回所选日期。适用于任何过去的日期,如2016-04-05