从现在开始接下来的10个月?

时间:2015-05-27 06:32:46

标签: php date

我想从今天开始寻找下个月的第10个月。因此,如果今天是5月27日,那么接下来的10月是6月10日。如果今天是8月1日,那么接下来的10月将是8月10日。

我知道我可以使用

找到下个月的第一天
$firstDayNextMonth = date('Y-m-d', strtotime('first day of next month'));

我也可以将这种格式用于我的案例吗?如果没有,我怎么能实现我的目标?

非常感谢您的帮助! :)

6 个答案:

答案 0 :(得分:9)

strtotime无法在一次通话中执行此操作,但您可以执行以下操作:

<?php
    $current_day = (int)date('j');

    if ($current_day < 10) {
        $firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of this month')));
    } else {
        $firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of next month')));
    }

    echo $firstDayNextMonth;
?>

或者只是

$firstDayNextMonth = date('Y-m-d', strtotime('+9 days', strtotime('first day of ' . ((int)date('j') < 10 ? 'this' : 'next' ) . ' month')));

答案 1 :(得分:3)

您可以使用DateTime类:

$Date = new DateTime('first day of '.(date('j') < 10 ? 'this' : 'next').' month');
$Date->add(DateInterval::createFromDateString('9 days'));
var_dump($Date->format('Y-m-d'));

如果今天是'2015-06-10',这将导致'2015-07-10'。如果在这种情况下应该返回“2015-06-10”,请使用<=(或< 11)。

答案 2 :(得分:0)

不确定strtotime是否能够做到这一点。

一个小技巧可以是:

$firstDayNextMonth = date('Y-m', strtotime('next month')) . '-10';

答案 3 :(得分:0)

这可能会有所帮助吗?

通过使用mktime,您可以简单地定义您想要的日期,甚至可以更轻松地匹配更多的一天。

// set our day number
$daynum = 10;
$curDay = date('d');
// get current month
$curMonth = date('n');
// get current year
$curYear  = date('Y');
$firstDayNextMonth = 'MissingNo';
if($curDay < $dayNum) {
     $firstDayNextMonth = mktime(0, 0, 0, $curMonth, $daynum);
}
else {
   // darnit, new year. but will we party?
   if ($curMonth == 12) {
      // use mktime to get a timestamp. We can become very precise with this...
      $firstDayNextMonth = mktime(0, 0, 0, 0, $daynum, $curYear+1);
   }
   else {
       $firstDayNextMonth = mktime(0, 0, 0, $curMonth+1, $daynum);
       // let's test if we can have a little party or not.
     }
  }
  echo date('D',$firstDayNextMonth) === date('D') ? 'matches! let\'s party!' : 'no match :( hide the beer';

答案 4 :(得分:0)

$firstDayNextMonth = date('Y-m-d', strtotime('first day of next month'));
echo $firstDayNextMonth ."</br>";
$firstDayNextMonth = date('Y-m', strtotime('next month'));
echo $firstDayNextMonth."-10";

这就是你想要的吗?

答案 5 :(得分:0)

很简单:

date('Y-m-d', strtotime('+9 days', strtotime('first day of this month', strtotime(sprintf('+%d days', (int) date('t') - 10)))));