【问题标题】:Carbon get quarter of the year碳得到一年的季度
【发布时间】:2022-01-13 02:30:05
【问题描述】:

我想获得基于季度的数据,因此每年我将有 4 个变量,例如 pastYearsQOne pastYearsQTwo pastYearsQThree pastYearsQFour

我的问题是如何获得一年中的季度?

code

$pastYearsQOne = Project::orderby('id', 'desc')->whereDate(
  'created_at', '<=', now()->subYear(1)->startOfQuarter()->toDateTimeString()
                                         ^^^^^^^^^^^^^^^^
)->count();

如果仍然没有得到它!这是逻辑,

最终结果会是这样的:

$pastYearsQOne = data of: 2020 (year) -> 01~03 (months)

$pastYearsQTwo = data of: 2020 (year) -> 04~06 (months)

$pastYearsQThree = data of: 2020 (year) -> 07~09 (months)

$pastYearsQFour = data of: 2020 (year) -> 10~12 (months)

【问题讨论】:

    标签: php laravel php-carbon carbon


    【解决方案1】:

    startOfQuarterendOfQuarter 季度非常有用,还有 month 函数。

    请尝试使用以下代码。

    $startOfQ1 = Carbon::now()->subYear()->month(1)->startOfQuarter();
    $endOfQ1 = Carbon::now()->subYear()->month(1)->endOfQuarter();
    
    $startOfQ2 = Carbon::now()->subYear()->month(4)->startOfQuarter();
    $endOfQ2 = Carbon::now()->subYear()->month(4)->endOfQuarter();
    
    $startOfQ3 = Carbon::now()->subYear()->month(7)->startOfQuarter();
    $endOfQ3 = Carbon::now()->subYear()->month(7)->endOfQuarter();
    
    $startOfQ4 = Carbon::now()->subYear()->month(10)->startOfQuarter();
    $endOfQ4 = Carbon::now()->subYear()->month(10)->endOfQuarter();
    

    【讨论】:

    • 谢谢,它帮助我解决了我的问题,这是我的最终代码$pastYearsQOne = Project::orderby('id', 'desc')-&gt;whereBetween( 'created_at', [Carbon::now()-&gt;subYear(1)-&gt;month(1)-&gt;startOfQuarter(), Carbon::now()-&gt;subYear(1)-&gt;month(3)-&gt;endOfQuarter()] )-&gt;count();
    【解决方案2】:

    您可以为当前年份添加一个变量Carbon::today() 然后递归地为所有季度添加 3 个月 Carbon::addMonths(3)

    【讨论】:

      【解决方案3】:

      这是你的意思吗?

      public function index()
      {
          $now = Carbon::now()->subYears(1)->format('Y-m-d H:i:s');
      
          $pastQuarterOneStart = Carbon::parse($now)->subQuarters(3)->startOfQuarter()->format('Y-m-d H:i:s'); // 2020-01-01 00:00:00
          $pastQuarterOneEnd = Carbon::parse($now)->subQuarters(3)->endOfQuarter()->format('Y-m-d H:i:s'); // 2020-03-31 23:59:59
      
          $pastQuarterTwoStart = Carbon::parse($now)->subQuarters(2)->startOfQuarter()->format('Y-m-d H:i:s'); // 2020-04-01 00:00:00
          $pastQuarterTwoEnd = Carbon::parse($now)->subQuarters(2)->endOfQuarter()->format('Y-m-d H:i:s'); // 2020-06-30 23:59:59
      
          $pastQuarterThreeStart = Carbon::parse($now)->subQuarter(1)->startOfQuarter()->format('Y-m-d H:i:s'); // 2020-07-01 00:00:00
          $pastQuarterThreeEnd = Carbon::parse($now)->subQuarter(1)->endOfQuarter()->format('Y-m-d H:i:s'); // 2020-09-30 23:59:59
      
          $pastQuarterFourStart = Carbon::parse($now)->startOfQuarter()->format('Y-m-d H:i:s'); // 2020-10-01 00:00:00
          $pastQuarterFourEnd = Carbon::parse($now)->->endOfQuarter()->format('Y-m-d H:i:s'); // 2020-12-30 23:59:59
      
      
          // Get 2020-01-01 00:00:00 to 2020-03-31 23:59:59
          $pastYearsQOne = Project::orderby('id', 'desc')->whereBetween(
              'created_at',
              [
                  $pastQuarterOneStart,
                  $pastQuarterOneEnd
              ]
          )->count();
      
          // Get 2020-04-01 00:00:00 to 2020-06-31 23:59:59
          $pastYearsQTwo = Project::orderby('id', 'desc')->whereBetween(
              'created_at',
              [
                  $pastQuarterTwoStart,
                  $pastQuarterTwoEnd
              ]
          )->count();
      
          // Get 2020-07-01 00:00:00 to 2020-09-31 23:59:59
          $pastYearsQThree = Project::orderby('id', 'desc')->whereBetween(
              'created_at',
              [
                  $pastQuarterThreeStart,
                  $pastQuarterThreeEnd
              ]
          )->count();
      
          // Get 2020-10-01 00:00:00 to 2020-12-31 23:59:59
          $pastYearsQFour = Project::orderby('id', 'desc')->whereBetween(
              'created_at',
              [
                  $pastQuarterFourStart,
                  $pastQuarterFourEnd
              ]
          )->count();
      }
      

      这里我也根据你要检索的数据更改查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-29
        • 2020-07-16
        • 2021-02-04
        • 2022-01-12
        • 2015-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多