- Модуль: 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];
}