Laravel使用碳来获得当前季度

时间:2015-04-06 14:34:15

标签: php laravel laravel-5 php-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);

但现在我正在努力解决如何获得上一季度的开始和结束日期。

4 个答案:

答案 0 :(得分:5)

您可以使用firstOfQuarterlastOfQuarter方法确定一个季度的开始和结束日期......

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

答案 1 :(得分:1)

我想我已经解决了它:

...
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;
...

如果有更好的方法,请让我知道更好的方法,非常感谢您的帮助。

答案 2 :(得分:0)

只需在上面的答案中添加更多内容,应使用的实际方法是以下方法:

$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 */

答案 3 :(得分:0)

  • 要查找以当前日期为输入的季度的当前开始日期和结束日期,并以自定义格式设置日期的格式。

**

$ yyyymm =当前日期(); $ date = new \ Carbon \ Carbon($ yyyymm);
$ ProfileData ['date_from'] = $ date-> firstOfQuarter()-> format('Ymd');
$ ProfileData ['date_to'] = $ date-> endOfQuarter()-> format('Ymd');

**