Laravel использует углерод для получения текущего квартала

Как я могу использовать Carbon для определения текущего квартала? т.е. Я хотел бы узнать дату начала квартала и дату его окончания.

Я попробовал интуитивный echo new Carbon('this quarter'); способ, который не работает, но я думаю, что у них нет такого способа для четвертаков.


Я понял это, я сделал:

$query->where(DB::raw('QUARTER(FT.created_at)'), Carbon::now()->quarter);
$query->where(DB::raw('YEAR(FT.created_at)'), '=', Carbon::now()->year);

Но теперь я борюсь с тем, как получить дату начала и окончания последнего квартала.


person imperium2335    schedule 06.04.2015    source источник
comment
Какую дату вы бы хотели, чтобы он вернулся? Или вы просто хотите получить номер текущего квартала созданной даты?   -  person lsowen    schedule 06.04.2015
comment
Дата, возвращенная Carbon::now()->toDateString()   -  person imperium2335    schedule 06.04.2015
comment
Вы хотите просто проверить, относится ли дата к последнему кварталу?   -  person mininoz    schedule 06.04.2015
comment
@mininoz Да, верно, это для фильтра, который я делаю.   -  person imperium2335    schedule 06.04.2015
comment
@ imperium2335 Вы используете QUARTER(FT.created_at), поэтому вам больше не нужно беспокоиться о дате начала или окончания квартала. Почему бы вам просто не передать 4 в запрос?   -  person mininoz    schedule 06.04.2015
comment
@mininoz У меня проблема, когда проходит год. Я нахожусь в первом квартале и фильтрую, чтобы показать последний квартал, который должен ограничивать дату по годам, а также по кварталам (4).   -  person imperium2335    schedule 06.04.2015


Ответы (4)


Вы можете использовать методы firstOfQuarter и lastOfQuarter для определения дат начала и окончания квартала...

$date = new \Carbon\Carbon('-3 months');
$firstOfQuarter = $date->firstOfQuarter();
$lastOfQuarter = $date->lastOfQuarter();
person user1669496    schedule 06.04.2015

Я думаю, что решил это:

...
case 9:
                    $a = Carbon::now();
                    $a->month($a->month-3);
                    $lastQuarter = $a->quarter;
                    $query->where(DB::raw('QUARTER(FT.created_at)'), $lastQuarter);
                    $query->where(DB::raw('YEAR(FT.created_at)'), $a->year);
                    break;
...

Пожалуйста, дайте мне знать более хороший способ сделать это, если он есть, ваша помощь очень ценится.

person imperium2335    schedule 06.04.2015

Просто чтобы добавить больше к ответу выше, фактическими методами, которые следует использовать, являются следующие методы:

$date = new \Carbon\Carbon('-3 months'); // for the last quarter requirement
$date->startOfQuarter(); // the actual start of quarter method
$date->endOfQuarter(); // the actual end of quarter method (with time 23:59:59.999999)

следующее не совсем верно:

$date->firstOfQuarter(); /* use this method when you wish to get the first
                            occurrence of a given day in the current quarter, its 
                            fallback works similar to the startOfQuarter() method */
$date->lastOfQuarter(); /* this is where the problem located, unlike the
                           endOfQuarter() method, this method return the start of a
                           day (with time 00:00:00.000000) (because the method is
                           designed to get the last occurrence of a given day in the
                           current quarter */
person Phantom1412    schedule 21.07.2020

  • Чтобы найти текущую дату начала и окончания квартала с текущей датой в качестве входных данных и отформатировать дату в пользовательском формате.

**

$ггггмм = текущая дата(); $date = new \Carbon\Carbon($yyyymm);
$ProfileData['date_from'] = $date-›firstOfQuarter()-›format('Ymd');
$ProfileData['date_to'] = $date-›endOfQuarter()-›format('Ymd');

**

person saurabh kamble    schedule 11.09.2020