date_add递增月份在该月的最后一天无法正常工作

时间:2016-03-31 13:58:47

标签: php

我正在开发一个php应用程序,为此我使用函数date_add得到这样的数月数组:

$months = array();
        $n_6 = date_add(date_create(), date_interval_create_from_date_string('-6 months'));
        $n_5 = date_add(date_create(), date_interval_create_from_date_string('-5 months'));
        $n_4 = date_add(date_create(), date_interval_create_from_date_string('-4 months'));
        $n_3 = date_add(date_create(), date_interval_create_from_date_string('-3 months'));
        $n_2 = date_add(date_create(), date_interval_create_from_date_string('-2 months'));
        $n_1 = date_add(date_create(), date_interval_create_from_date_string('-1 months'));
        $n = date_create();
        $n1 = date_add(date_create(), date_interval_create_from_date_string('+1 months'));
        $n2 = date_add(date_create(), date_interval_create_from_date_string('+2 months'));
        $n3 = date_add(date_create(), date_interval_create_from_date_string('+3 months'));
        $n4 = date_add(date_create(), date_interval_create_from_date_string('+4 months'));
        array_push($months, $n4, $n3, $n2, $n1, $n, $n_1, $n_2, $n_3, $n_4, $n_5, $n_6);

问题在于,今天是三月的最后一天,因为这样我有些不对劲,当我var_dump($months)时,它会显示以下内容:

array(11) { 
    [0]=> object(DateTime)#1026 (3) { ["date"]=> string(26) "2016-07-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [1]=> object(DateTime)#1025 (3) { ["date"]=> string(26) "2016-07-01 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [2]=> object(DateTime)#1024 (3) { ["date"]=> string(26) "2016-05-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [3]=> object(DateTime)#1023 (3) { ["date"]=> string(26) "2016-05-01 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [4]=> object(DateTime)#1022 (3) { ["date"]=> string(26) "2016-03-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [5]=> object(DateTime)#1021 (3) { ["date"]=> string(26) "2016-03-02 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [6]=> object(DateTime)#1020 (3) { ["date"]=> string(26) "2016-01-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [7]=> object(DateTime)#1019 (3) { ["date"]=> string(26) "2015-12-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [8]=> object(DateTime)#1018 (3) { ["date"]=> string(26) "2015-12-01 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [9]=> object(DateTime)#1017 (3) { ["date"]=> string(26) "2015-10-31 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 
    [10]=> object(DateTime)#1016 (3) { ["date"]=> string(26) "2015-10-01 15:45:53.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" }
}

因为我只需要几个月,这是一个问题。我得到一些重复项,其他一些被跳过,所以你知道如何解决这个问题吗?在此先感谢!!

修改

我想要的输出是几个月的数组,例如,如果现在是3月我想要的是6个月前和下一个4.所以9月,10月,11月和12月从2015年开始; 1月,2月,(3月),4月,5月,6月,7月。

0 个答案:

没有答案