2017-08-30 194 views
0

我是Laravel/PHP的初學者,我使用Carbon類來管理日期。 我需要按月日期時間的數組,比上年直到本月初,輸出應該是如下:在Laravel 5.4中使用Carbon獲取日期數組5.4

$dates = [ 
    '2016-01-01 00:00:00', 
    '2016-02-01 00:00:00', 
    '2016-03-01 00:00:00', 
    '2016-04-01 00:00:00', 
    '2016-05-01 00:00:00', 
    '2016-06-01 00:00:00', 
    '2016-07-01 00:00:00', 
    '2016-08-01 00:00:00', 
    '2016-09-01 00:00:00', 
    '2016-10-01 00:00:00', 
    '2016-11-01 00:00:00', 
    '2016-12-01 00:00:00', 
    '2017-01-01 00:00:00', 
    '2017-02-01 00:00:00', 
    '2017-03-01 00:00:00', 
    '2017-04-01 00:00:00', 
    '2017-05-01 00:00:00', 
    '2017-06-01 00:00:00', 
    '2017-07-01 00:00:00', 
    '2017-08-01 00:00:00', 
]; 

我無法弄清楚如何做到這一點,謝謝提前。

+0

你已經的日期,你必須命令他們,或者你怎麼生成日期爲每月的第一個在幾年每月的(從@Arthur答案Samarcos)? –

+0

我需要生成從上一年開始的日期數組(因此如果我們在2020年,上一年應該是2019年)直到當前月份,因此最後一個日期應該是'2017-08-01 00: 00:00'。 – dwix

回答

1

也許是這樣的:

function dates() 
{ 
    $start = \Carbon\Carbon::now()->subYear()->startOfYear(); 
    $months_to_render = \Carbon\Carbon::now()->diffInMonths($start); 

    $dates = []; 

    for ($i = 0; $i <= $months_to_render; $i++) { 
     $dates[] = $start->toDateTimeString(); 
     $start->addMonth(); 
    } 

    return $dates; 
} 
+0

非常感謝您的幫助,但日期應該停止在當前月份,在這種情況下是'八月2017年'。 – dwix

+1

對不起,沒有看到那個要求。 @dwix –

+0

謝謝,它正在工作,但它從'2016-02-01'開始,而不是'2016-01-01'。 – dwix