下个月的php日期错误的一天

时间:2015-03-20 16:53:07

标签: php date

为什么

echo date("j/m/Y", strtotime("2015/01/31 00:00 next month"));

给出 2015年3月3日 并不是 28/02/2015

所有我想要的是下个月的今天日期,如果今天的日期无效,那么它会给我下个月的最后一天。

2 个答案:

答案 0 :(得分:3)

$thisMonth = "2015-01-31 00:00";
$thisMonthDate = strtotime($thisMonth);
$nextMonthDate = strtotime($thisMonth . ' next month');
if (date('j', $thisMonthDate) !== date('j', $nextMonthDate)) {
    $nextMonthDate = strtotime(date('Y-m-d H:i:s', $nextMonthDate) . ' last day of previous month');
}
echo date('Y-m-d H:i:s', $nextMonthDate), PHP_EOL;

答案 1 :(得分:2)

PHP在这里做的是:

首先它会在您的日期添加一个月,到达“2015/02/31”

然后它意识到这个日期不存在,并且它是“2015/02/28”之后的3天,以人类术语翻译为“2015/03/03”

查看here以解决您的问题,正如@kingkero建议的那样