public static function getTimezone() { if (($timezone = self::getEnv("envTimezone")) === null) { try { $mmdb = array_reverse(glob(Config::$geoip . "GeoLite2-City*.mmdb"))[0]; $reader = new \GeoIp2\Database\Reader($mmdb); $ip = Request::getIp(); $record = $reader->city($ip); $timezone = $record->location->timeZone; self::setTimezone($timezone); } catch (\Exception $e) { Logger::instance()->logError($e->getMessage()); self::setTimezone(Config::$defaultTimezone); } } return new \DateTimeZone($timezone); }