как осуществить завершение задачи за ограниченное время для разных часовых поясов, например с 10 до 11 часов - PullRequest
0 голосов
/ 24 мая 2019

У меня есть приложение 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;
    }

любая помощь будет признательна в отношении реализации этого процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...