10

我正在尝试从当前日期开始六个月,六个月。

我试过使用:

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

但它似乎不起作用,总是返回01。有一个更好的方法吗?

谢谢!

4

4 回答 4

21

我发现使用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');
于 2012-12-20T16:52:34.967 回答
4

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

date('d', strtotime('+6 months'));
于 2012-12-20T16:54:25.087 回答
1

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

<?php
$date = new DateTime();
$date->add(new DateInterval('P6M'));

echo $date->format('d M Y');
于 2012-12-20T16:57:34.190 回答
0

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

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

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

于 2012-12-20T16:55:10.080 回答