【问题标题】:How to get whole start week and end week by the use of specific dates using Carbon and Eloquent in laravel framework?如何通过在 laravel 框架中使用 Carbon 和 Eloquent 使用特定日期来获得整个开始周和结束周?
【发布时间】:2021-05-07 11:36:14
【问题描述】:

我想通过使用特定日期来获得整个星期。 例如,我有 2021 年 2 月 3 日星期三的单一日期。现在我想使用 Eloquent 和 Carbon 获取一周的开始和结束的一周,所以输出将是这样的。

2021 年 2 月 1 日 - 星期一
2021 年 2 月 2 日 - 星期二
2021 年 2 月 3 日 - 星期三 - 这是我的日期示例
2021 年 2 月 4 日 - 星期四
2021 年 2 月 5 日 - 星期五
2021 年 2 月 6 日 - 星期六
2021 年 2 月 7 日 - 星期日

【问题讨论】:

  • 星期开始是星期六?
  • 看不出这跟 MySQL 有什么关系

标签: mysql laravel laravel-8 php-carbon


【解决方案1】:

假设您将示例日期存储在 $date 中。你可以试试下面这段代码

$now = Carbon::parse($date);
$weekStartDate = $now->startOfWeek()->format('Y-m-d H:i');
$weekEndDate = $now->endOfWeek()->format('Y-m-d H:i');

https://carbon.nesbot.com/docs/#api-getters

【讨论】:

    【解决方案2】:

    您可以在查询中这样做:

    $query = "2021-02-03"
    $date = Carbon::parse($query);
    $startWeek = $date->startOfWeek()->format('Y-m-d');
    $endWeek = $date->endOfWeek()->format('Y-m-d');
    
    $q = User::where('date', '>=', $startWeek)
          ->where('date', '<=', $endWeek)
          ->get();
    

    【讨论】:

      【解决方案3】:
      $date = CarbonImmutable::parse('2021-02-03');
      
      foreach ($date->startOfWeek()->daysUntil($date->endOfWeek()) as $day) {
        echo $day->format('F j, Y - l') . "\n";
      }
      

      产生您的确切预期输出:

      February 1, 2021 - Monday
      February 2, 2021 - Tuesday
      February 3, 2021 - Wednesday
      February 4, 2021 - Thursday
      February 5, 2021 - Friday
      February 6, 2021 - Saturday
      February 7, 2021 - Sunday
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-10
        • 2016-08-11
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多