laravel carbon从集合的日期列中获取日期名称

时间:2017-02-17 04:04:59

标签: php laravel laravel-5 php-carbon

我有一个数据库中的这个集合,我有一个名为“event_date”的列。

我想要的只是获取集合中该列的日期名称。

我知道你可以使用Carbon来获取名称的日期,例如,一个名为->format()的方法,但是我收到一个错误,说这个方法不存在。

到目前为止我的代码如下:

$collection = MyModel::all();

里面有“event_date”属性或列。从那时起,我想得到将它们放入数组或集合中的日期名称,最后计算那些天数。

为了达到这个目的,我尝试了以下方法:

我尝试了->pluck()方法,如下所示:

$filtered = collect([
            'myDates'=>$collection->pluck('event_date'),
        ]);

dd($filtered)如下所示:

Collection {#209 ▼
  #items: array:1 [▼
    "myDates" => Collection {#243 ▼
      #items: array:30 [▼
        0 => Carbon {#244 ▼
          +"date": "2017-02-05 00:00:00.000000"
          +"timezone_type": 3
          +"timezone": "America/Mexico_City"
        }
        1 => Carbon {#218 ▼
          +"date": "2017-01-15 00:00:00.000000"
          +"timezone_type": 3
          +"timezone": "America/Mexico_City"
        }
        2 => Carbon {#250 ▼
          +"date": "2016-09-25 00:00:00.000000"
          +"timezone_type": 3
          +"timezone": "America/Mexico_City"
        }
        3 => Carbon {#249 ▼
          +"date": "2016-05-22 00:00:00.000000"
          +"timezone_type": 3
          +"timezone": "America/Mexico_City"
        }
...

我试着按如下方式获取日期名称:

$Daynames = $filtered->each(function($item,$key){
            return $item->myDates->format('l');
        });

但是我收到了以下错误:

  

未定义属性:Illuminate \ Support \ Collection :: $ myDates

任何想法只将日期名称添加到数组或集合中?还有另一种方法吗?

4 个答案:

答案 0 :(得分:6)

您在日期集合上调用 format(),而您应该在 Carbon 对象上调用它。您需要另一个循环来遍历 myDates 集合中的所有日期并对其进行格式化,例如:

$Daynames = [];
$filtered->each(function($item,$key) use (&$Daynames) {
  $item->each(function($date) use (&$Daynames) {
    $Daynames[] = $date->format('l');
  });
});

答案 1 :(得分:2)

通过Carbon库,我们可以轻松获得它。

  1. 使用库

    use Carbon\Carbon;
    
  2. 获取日期

    $date = '2018-11-15';
    $d    = new DateTime($date);
    $d->format('l');  //pass l for lion aphabet in format 
    

输出为Thursday。 它在laravel中对我有用

答案 2 :(得分:1)

使用收集管道实现此目的的优雅方式:

$days = MyModel::all()->pluck('event_date')->map(function($date) {
    return $date->format('l');
}); 

答案 3 :(得分:1)

  1. 使用库

    use Carbon\Carbon;

  2. 解析日期

    $day = Carbon::parse($yourDate)->format('l')