PHP日期月未正确计算

时间:2014-03-28 20:33:48

标签: php arrays date strtotime

$months = array();
$first = strtotime("first day this month");
for ( $i = 1; $i <= 6; $i++ ) {
    array_push($months, date('F', strtotime("-$i month", $first)));
}
var_dump($months);

此代码在今天(3月)运行时无法正常运行

输出:

array(6) {
  [0]=>
  string(5) "March"
  [1]=>
  string(7) "January"
  [2]=>
  string(8) "December"
  [3]=>
  string(8) "November"
  [4]=>
  string(7) "October"
  [5]=>
  string(9) "September"
}

二月在哪儿?

1 个答案:

答案 0 :(得分:0)

将您的代码更改为此以查看实际发生的情况:

$months = array();
$first = strtotime("first day this month");
echo date('d-F-Y', $first);
for ( $i = 1; $i <= 6; $i++ ) {
    array_push($months, date('d-F-Y', strtotime("-$i month", $first)));
}
var_dump($months);

您会看到$first日期不对。它设置为29-March-2014。为什么二月不在?因为它只有28天:)

解决方案是:$first = strtotime("first day of this month");输出01-March-2014