本文整理汇总了PHP中Horde_Icalendar::findComponentByAttribute方法的典型用法代码示例。如果您正苦于以下问题:PHP Horde_Icalendar::findComponentByAttribute方法的具体用法?PHP Horde_Icalendar::findComponentByAttribute怎么用?PHP Horde_Icalendar::findComponentByAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Horde_Icalendar
的用法示例。
在下文中一共展示了Horde_Icalendar::findComponentByAttribute方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _parseTZID
/**
* Groks the TZID and returns an offset in seconds from UTC for this
* date and time.
*
* @param array $date A date hash.
* @param array $time A time hash.
* @param string $tzid A timezone ID.
*
* @return integer The offset from UTC in seconds for the provided
* timezone and date/time.
*/
protected function _parseTZID($date, $time, $tzid)
{
$vtimezone = $this->_container->findComponentByAttribute('vtimezone', 'TZID', $tzid);
if (!$vtimezone) {
return false;
}
$change_times = array();
foreach ($vtimezone->getComponents() as $o) {
$change_times = array_merge($change_times, $vtimezone->parseChild($o, $date['year']));
}
if (!$change_times) {
return false;
}
usort($change_times, function ($a, $b) {
if (!$a['end']) {
if (!$b['end']) {
return $a['time'] - $b['time'];
}
return 1;
}
if (!$b['end']) {
return -1;
}
return $a['end'] - $b['end'];
});
// Time is arbitrarily based on UTC for comparison.
$t = @gmmktime($time['hour'], $time['minute'], $time['second'], $date['month'], $date['mday'], $date['year']);
if ($t < $change_times[0]['time']) {
return $change_times[0]['from'];
}
for ($i = 0, $n = count($change_times); $i < $n - 1; $i++) {
// See Bug: 14153. Some timezone definitions may be such that a
// transition will incorrectly match due to the way we parse the
// 'end' times. There *may* be a more correct way to do this by
// sorting the transitions/handling 'end' values differently.
if ($t >= $change_times[$i]['time'] && $t < $change_times[$i + 1]['time'] && $this->_checkEndDate($t, $change_times[$i + 1])) {
return $change_times[$i]['to'];
}
}
if ($t >= $change_times[$n - 1]['time']) {
return $change_times[$n - 1]['to'];
}
return false;
}
示例2: _parseTZID
/**
* Groks the TZID and returns an offset in seconds from UTC for this
* date and time.
*
* @param array $date A date hash.
* @param array $time A time hash.
* @param string $tzid A timezone ID.
*
* @return integer The offset from UTC in seconds for the provided
* timezone and date/time.
*/
protected function _parseTZID($date, $time, $tzid)
{
$vtimezone = $this->_container->findComponentByAttribute('vtimezone', 'TZID', $tzid);
if (!$vtimezone) {
return false;
}
$change_times = array();
foreach ($vtimezone->getComponents() as $o) {
$change_times = array_merge($change_times, $vtimezone->parseChild($o, $date['year']));
}
if (!$change_times) {
return false;
}
usort($change_times, function ($a, $b) {
if (!$a['end']) {
if (!$b['end']) {
return $a['time'] - $b['time'];
}
return 1;
}
if (!$b['end']) {
return -1;
}
return $a['end'] - $b['end'];
});
// Time is arbitrarily based on UTC for comparison.
$t = @gmmktime($time['hour'], $time['minute'], $time['second'], $date['month'], $date['mday'], $date['year']);
if ($t < $change_times[0]['time']) {
return $change_times[0]['from'];
}
for ($i = 0, $n = count($change_times); $i < $n - 1; $i++) {
if ($t >= $change_times[$i]['time'] && $t < $change_times[$i + 1]['time']) {
return $change_times[$i]['to'];
}
}
if ($t >= $change_times[$n - 1]['time']) {
return $change_times[$n - 1]['to'];
}
return false;
}