У меня есть приложение Laravel, у которого есть ограничение по времени для выполнения задачи, например с 10 до 11 утра.Пользователи должны иметь возможность выполнять свои задачи по местному времени.поэтому из-за ограничений по времени они получат сообщение о недопустимом сохранении.
Часовой пояс приложения по умолчанию - UTC.а ограничение определяется в типе задачи как запись даты и времени, например: limit_start
= 2019/02/03 10:00:00
, limit_end
2018/05/16 11:00:00
.И как вы можете видеть после извлечения данных из типа задачи, поскольку это ежедневная задача, я использую только временную часть данных, а часть даты не важна.
Важен ли часовой пояс сервера в этой ситуации?
Это мое ограничение реализации прямо сейчас:
private function dailyLimitation()
{
$timezone = auth()->user()->timezone;
/** @var Carbon $limit_start */
/** @var Carbon $limit_end */
$limit_start = $this->limit_start;
$limit_end = $this->limit_end;
$user_time = Carbon::parse(Timezone::ConvertToUTC(now(),$timezone));
$limit_start->year($user_time->year);
$limit_start->month($user_time->month);
$limit_start->day($user_time->day);
$limit_end->year($user_time->year);
$limit_end->month($user_time->month);
$limit_end->day($user_time->day);
$diff = new \stdClass();
$interval = $limit_start->diff($user_time);
if ($interval->invert)
{
$diff->diff = $limit_start->diffForHumans($user_time);
$diff->type = 'before';
$diff->allowed = false;
return $diff;
}
$interval = $limit_end->diff($user_time);
if ($interval->invert)
{
$diff->diff = $limit_end->diffForHumans($user_time);
$diff->type = 'ok';
$diff->allowed = true;
return $diff;
}
$diff->diff = $limit_end->diffForHumans();
$diff->type = 'past';
$diff->allowed = false;
return $diff;
}
любая помощь будет признательна в отношении реализации этого процесса.