• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::GetUserTimezoneName
static function GetUserTimezoneName($user, $getDefault = true)
{
	if (isset(self::$userTimezoneList[$user]) && !is_array($user) && (int)$user > 0)
	{
		return self::$userTimezoneList[$user];
	}

	if (is_array($user) && (int)$user['ID'] > 0 && isset(self::$userTimezoneList[$user['ID']]))
	{
		return self::$userTimezoneList[$user['ID']];
	}
	else
	{
		if (!is_array($user) && (int)$user > 0)
		{
			$user = self::GetUser((int)$user, true);
		}

		if (CTimezone::OptionEnabled() && $user && is_array($user))
		{
			$offset = isset($user['TIME_ZONE_OFFSET'])
				? (int)(date('Z') + $user['TIME_ZONE_OFFSET'])
				: self::GetCurrentOffsetUTC($user['ID']);

			$tzName = CUserOptions::GetOption(
				"calendar",
				"timezone" . $offset,
				false,
				$user['ID']
			);

			if ($tzName === 'undefined' || $tzName === 'false')
			{
				$tzName = false;
			}
			if (!$tzName && $user['AUTO_TIME_ZONE'] !== 'Y' && $user['TIME_ZONE'])
			{
				$tzName = $user['TIME_ZONE'];
			}
		}
		else
		{
			$offset = date('Z');
			$tzName = date_default_timezone_get();
		}

		try
		{
			new DateTimeZone($tzName);
		}
		catch (Exception $e)
		{
			$tzName = false;
		}

		if (!$tzName && $getDefault)
		{
			$tzName = self::GetGoodTimezoneForOffset($offset);
		}

            if ($user && is_array($user) && $user['ID'])
            {
                self::$userTimezoneList[$user['ID']] = $tzName;
            }
	}

	return $tzName;
}