【问题标题】:Add six months in php在php中添加六个月
【发布时间】:2012-12-20 16:51:33
【问题描述】:

我正在尝试从当前日期算起六个月后的月份。

我尝试过使用:

date('d', strtotime('+6 month', time()));

但它似乎不起作用,总是返回01。有没有更好的方法来做到这一点?

谢谢!

【问题讨论】:

  • 顺便说一句,如果省略第二个参数,strtotime() 默认使用当前时间。另外,我认为strtotime() 不会计算月份,因为它不是一个绝对的时间段,例如天数因月而异。

标签: php date datetime


【解决方案1】:

我发现使用DateTime 更容易使用:

$datetime = new \DateTime();
$datetime->modify('+6 months');
echo $datetime->format('d');

$datetime = new \DateTime();
$datetime->add(new DateInterval('P6M'));
echo $datetime->format('d');

或在 PHP 5.4+ 版本中

echo (new \DateTime())->add(new \DateInterval('P6M'))->format('d');

【讨论】:

    【解决方案2】:

    如果您仍想使用 strtotime 和日期函数而不是 DateTime() 对象,则可以使用以下方法:

    date('d', strtotime('+6 months'));
    

    【讨论】:

      【解决方案3】:

      您可以将DateTime 类与DateInterval 类结合使用:

      <?php
      $date = new DateTime();
      $date->add(new DateInterval('P6M'));
      
      echo $date->format('d M Y');
      

      【讨论】:

        【解决方案4】:

        您不需要将time() 传递给strtotime,因为它是默认值。

        除此之外,您的方法是正确的 - 除了您选择 date('d')(这是放一天)而不是 date('m') 用于一个月,所以 echo date('m', strtotime('+6 month')); 应该这样做。

        尽管如此,我还是推荐使用DateTime 的方式,John 说过。 DateTime 与“旧”日期函数相比有几个优点,例如,当 UNIX 大爆炸以来的秒数不再适合 32 位整数时,它们不会停止工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-29
          • 2018-06-06
          • 1970-01-01
          • 1970-01-01
          • 2014-09-27
          • 1970-01-01
          • 2011-06-20
          相关资源
          最近更新 更多