使用php获得下一个相同的日期

时间:2017-06-07 12:37:41

标签: php date

  1. 我需要获得即时日期,如果我选择日期为05,那么输出将为2017-07-05因为已经过了选择日期
  2. 如果我选择12,则输出将2017-06-12导致此日期未来日期
  3. 最后如果我选择当前月份的上一个日期,那么输出将是下个月的相同日期,如果我选择当前月份的未来日期,那么输出将是同一个月
  4. 我累了,但没有工作

    $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)));
    

    谢谢你的提前

6 个答案:

答案 0 :(得分:2)

还有一个选择:

https://3v4l.org/Me2Kh

$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