У меня есть свойство доступа, которое я создал для отображения всех дат в часовом поясе пользователя. Посмотрите этот код:
Код: Выделить всё
trait Timezone
{
public function getCreatedAtAttribute($value)
{
return $this->timezone($value);
}
public function getUpdatedAtAttribute($value)
{
return $this->timezone($value);
}
public function getDeletedAtAttribute($value)
{
return $this->timezone($value);
}
// convert date to user timezone
public function timezone($value)
{
$carbon = Carbon::parse($value);
if (auth()->check()) {
$carbon->tz(auth()->user()->timezone);
}
return $carbon->toDateTimeString();
}
}
Я буду использовать UTC для запроса результатов, а затем конвертировать их в часовой пояс пользователя. Проблема в том, что для некоторых пользователей, в зависимости от времени суток, неделя отображается со вторника по понедельник или с воскресенья по субботу, а не с понедельника по воскресенье.
Вот мой код для этого:
Код: Выделить всё
public static function dateStartEnd($date_range)
{
if ($date_range == 'Today') {
$start_date = Carbon::now()->startOfDay();
$end_date = Carbon::now()->endOfDay();
}
else if ($date_range == 'Yesterday') {
$start_date = Carbon::now()->subDay()->startOfDay();
$end_date = Carbon::now()->subDay()->endOfDay();
}
else if ($date_range == 'This Week') {
$start_date = Carbon::now()->startOfWeek();
$end_date = Carbon::now()->endOfWeek();
}
else if ($date_range == 'Last Week') {
$start_date = Carbon::now()->subWeek()->startOfWeek();
$end_date = Carbon::now()->subWeek()->endOfWeek();
}
else if ($date_range == 'This Month') {
$start_date = Carbon::now()->startOfMonth();
$end_date = Carbon::now()->endOfMonth();
}
else if ($date_range == 'Last Month') {
$start_date = Carbon::now()->subMonth()->startOfMonth();
$end_date = Carbon::now()->subMonth()->endOfMonth();
}
else {
// All Time
if ($lead = Lead::orderBy('created_at', 'asc')->first()) {
$start_date = Carbon::parse($lead->created_at);
}
else {
$start_date = Carbon::now()->startOfDay();
}
$end_date = Carbon::now()->endOfDay();
}
return [
'start_date' => $start_date,
'end_date' => $end_date,
];
}
Подробнее здесь: https://stackoverflow.com/questions/488 ... in-laravel
Мобильная версия