public function format($pattern, $timezone = null) {
		if (isset($timezone)) {
			$tempTimezone = $this->getTimezone();
			$this->setTimezone($timezone);
		}

		// Timezones DST data in ICU are not as accurate as PHP.
		// So we get timezone offset from php and pass it to ICU.
		$result = $this->getFormatter(array(
			'timezone' => 'GMT' . (parent::format('Z') ? parent::format('P') : ''),
			'pattern' => $pattern
		))->format($this->getTimestamp());

		if (isset($timezone)) {
			$this->setTimezone($tempTimezone);
		}

		return $result;
	}