• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/tzgen.php
  • Класс: TZConvVTimeZoneRule
  • Вызов: TZConvVTimeZoneRule::createFromString
static function createFromString($rruleString)
{
	if (!array_key_exists($rruleString, self::$cache))
	{
		$rrule = new self();

		$parts = explode(';', $rruleString);
		foreach ($parts as $part)
		{
			list($key, $value) = explode('=', $part);
			switch(mb_strtolower($key))
			{
				case 'bymonth':
					$rrule->month = (int)$value;
					if(!$rrule->month)
					{
						throw new Exception('invalid BYDAY month');
					}
					break;
				case 'byday':
					$icsWkDay = mb_substr($value, -2);
					if(!array_key_exists($icsWkDay, self::$WEEKDAY_DIGIT_MAP))
					{
						throw new Exception('invalid BYDAY wkday');
					}
					$rrule->wkday = self::$WEEKDAY_DIGIT_MAP[$icsWkDay];
					$rrule->numwk = (int)mb_substr($value, 0, -2);
					if(!$rrule->numwk)
					{
						throw new Exception('invalid BYDAY numwk');
					}
					break;
				case 'until':
					$rrule->until = new DateTime($value);
					$rrule->until->setTimezone(new DateTimeZone('UTC'));
					break;
			}
		}
		self::$cache[$rruleString] = $rrule;
	}

	return clone self::$cache[$rruleString];
}