Laravel Carbon,在工作日检索今天的日期?

Prz*_*tas 10 datetime laravel php-carbon laravel-5

我使用碳来比较2个日期和今天的日期,但是我在一个名为weekday的数据库中还有另一个字段,其中包含以下值:

'MO''TU''我们'

所以我不仅希望按日期搜索和输出,还要按工作日搜索:

public function show($id)
{   
    $today = Carbon::now();
    $weekday = //whatever carbon or something else has to retrieve today's day
    $event = Event::with('businesses')
       ->where('startdate', '<', $today->format('Y-m-d'))
       ->where('endate', '>', $today->format('Y-m-d'))
       //or where ('weekday') = $weekday?
       ->get();
    return view('events.showEvent', compact('event'));
}
Run Code Online (Sandbox Code Playgroud)

the*_*len 15

我不确定Carbon是否有这样的格式,但你可以做的是从天图和当前周日的常量中得到wekkday:

$weekMap = [
    0 => 'SU',
    1 => 'MO',
    2 => 'TU',
    3 => 'WE',
    4 => 'TH',
    5 => 'FR',
    6 => 'SA',
];
$dayOfTheWeek = Carbon::now()->dayOfWeek;
$weekday = $weekMap[$dayOfTheWeek];
Run Code Online (Sandbox Code Playgroud)

  • ```Carbon::now()-&gt;dayOfWeekIso``` 应​​返回为 ```1=&gt;星期一`````7=&gt;星期日``` (2认同)

leo*_*ost 7

如果您使用的是英语环境,则可以通过对Carbon l格式进行一些处理来获得该简短的工作日格式,该格式将返回工作日名称:

strtoupper(substr($today->format('l'), 0, 2)); // Returns 'MO', 'TU', etc
Run Code Online (Sandbox Code Playgroud)

如果您可以使用Carbon 2(在2018-08-31可用),它甚至可以更短:

strtoupper($today->isoFormat('dd'));
Run Code Online (Sandbox Code Playgroud)

  • 这个答案要好得多 (2认同)