Bogardo\Mailgun\Mail\Mailer::parseTime PHP Method

parseTime() private method

Parse given time and convert it to the required format
private parseTime ( integer | array | Carbon\Carbon | DateTime $time ) : string
$time integer | array | Carbon\Carbon | DateTime
return string
    private function parseTime($time)
    {
        $timezone = $this->config->get('app.timezone', 'UTC');
        /** @var Carbon $now */
        $now = Carbon::now($timezone);
        if (is_object($time)) {
            $deliveryTime = Carbon::instance($time);
        } else {
            if (is_array($time)) {
                reset($time);
                $type = key($time);
                $amount = $time[$type];
            } else {
                $type = 'seconds';
                $amount = $time;
            }
            /** @var Carbon $deliveryTime */
            $deliveryTime = Carbon::now($timezone);
            switch ($type) {
                case 'seconds':
                    $deliveryTime->addSeconds($amount);
                    break;
                case 'minutes':
                    $deliveryTime->addMinutes($amount);
                    break;
                case 'hours':
                    $deliveryTime->addHours($amount);
                    break;
                case 'days':
                    $deliveryTime->addHours($amount * 24);
                    break;
                default:
                    $deliveryTime->addSeconds($amount);
                    break;
            }
        }
        //Calculate boundaries
        $max = Carbon::now()->addHours(3 * 24);
        if ($deliveryTime->gt($max)) {
            $deliveryTime = $max;
        } elseif ($deliveryTime->lt($now)) {
            $deliveryTime = $now;
        }
        return $deliveryTime->format(\DateTime::RFC2822);
    }