Как получить всю начальную неделю и конечную неделю, используя определенные даты, используя Carbon и Eloquent в laravel framework?

#mysql #laravel #laravel-8 #php-carbon

#mysql #laravel #laravel-8 #php-carbon

Вопрос:

Я хочу получить целую неделю с использованием определенных дат. Например, у меня есть единственная дата 3 февраля 2021 года, среда. Теперь я хочу получить начало недели и конец недели, используя Eloquent и Carbon, чтобы результат был таким.

1 февраля 2021 г. — Понедельник
2 февраля 2021 г. — Вторник
3 февраля 2021 г. — Среда — Это мой пример даты
4 февраля 2021 г. — Четверг
5 февраля 2021 г. — Пятница
6 февраля 2021 г. — Суббота
7 февраля 2021 г. — Воскресенье

Комментарии:

1. начало недели — суббота?

2. Я не вижу, что это имеет какое-либо отношение к MySQL

Ответ №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