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

Pat*_*ros 2 php laravel php-carbon laravel-5

我有一个数据库中的这个集合,我有一个名为"event_date"的列.

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

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

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

$collection = MyModel::all();
Run Code Online (Sandbox Code Playgroud)

里面有"event_date"属性或列.从那以后,我想得到将它们放入数组或集合中的日期名称,并最终计算那些天数.

为了实现这一点,我尝试了以下方法:

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

$filtered = collect([
            'myDates'=>$collection->pluck('event_date'),
        ]);
Run Code Online (Sandbox Code Playgroud)

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"
        }
...
Run Code Online (Sandbox Code Playgroud)

我试着得到如下的日期名称:

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

但是我收到以下错误:

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

是否只有将daynames放入数组或集合中?还有另一种方法吗?

小智 9

你可以用不止一种方式来做

Carbon::parse($date)->dayName; // Monday ... 

Carbon::parse($date)->format('l'); // Monday ... 
Run Code Online (Sandbox Code Playgroud)

自定义位置

Carbon::parse($date)->locale('fr')->dayName;// Lundi ...
Run Code Online (Sandbox Code Playgroud)


jed*_*ylo 7

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

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


amb*_*tel 6

通过碳库我们可以很容易地得到它。

  1. 使用图书馆

    use Carbon\Carbon;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取日期

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

输出是Thursday。它在 Laravel 中对我有用


Elb*_*stu 6

  1. 使用图书馆

    use Carbon\Carbon;

  2. 解析日期

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