2017-08-30 198 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