Jyxo\Time\Time::__construct PHP Method

__construct() public method

Creates an instance and initializes the internal date/time representation.
public __construct ( string | integer | Time | DateTime $time, string | DateTimeZone $timeZone = null )
$time string | integer | Time | DateTime Date/time definition
$timeZone string | DateTimeZone Time zone definition
    public function __construct($time, $timeZone = null)
    {
        if (!is_object($time)) {
            $timeZone = $this->createTimeZone($timeZone ? $timeZone : date_default_timezone_get());
            if (is_numeric($time)) {
                // Unix timestamp as an integer or string
                $this->dateTime = new \DateTime('', $timeZone);
                $this->dateTime->setTimestamp($time);
            } elseif (is_string($time)) {
                // Textual representation
                try {
                    $this->dateTime = new \DateTime($time, $timeZone);
                } catch (\Exception $e) {
                    throw new \InvalidArgumentException(sprintf('Provided textual date/time definition "%s" is invalid', $time), 0, $e);
                }
            } else {
                throw new \InvalidArgumentException(sprintf('Provided date/time must be a number, %s or %s instance or a parameter compatible with PHP function strtotime().', \Jyxo\Time\Time::class, \DateTimeInterface::class));
            }
        } elseif ($time instanceof self) {
            // \Jyxo\Time\Time
            $this->dateTime = new \DateTime($time->format('Y-m-d H:i:s'), $time->getTimeZone());
            if ($timeZone) {
                $this->dateTime->setTimezone($this->createTimeZone($timeZone));
            }
        } elseif ($time instanceof \DateTime) {
            // \DateTime
            $this->dateTime = clone $time;
            if ($timeZone) {
                $this->dateTime->setTimezone($this->createTimeZone($timeZone));
            }
        } else {
            throw new \InvalidArgumentException(sprintf('Provided date/time must be a number, %s or %s instance or a parameter compatible with PHP function strtotime().', \Jyxo\Time\Time::class, \DateTimeInterface::class));
        }
    }