public static function getDate($str = '', $off = 0) { require_once JPATH_ROOT . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php'; $mainframe =& JFactory::getApplication(); $config = CFactory::getConfig(); $extraOffset = $config->get('daylightsavingoffset'); //convert to utc time first. $utc_date = new CDate($str); $date = new CDate($utc_date->toUnix() + $off * 3600); $my =& JFactory::getUser(); $cMy = CFactory::getUser(); //J1.6 returns timezone as string, not integer offset. if (method_exists('JDate', 'getOffsetFromGMT')) { $systemOffset = new CDate('now', $mainframe->getCfg('offset')); $systemOffset = $systemOffset->getOffsetFromGMT(true); } else { $systemOffset = $mainframe->getCfg('offset'); } if (!$my->id) { $date->setOffset($systemOffset + $extraOffset); } else { if (!empty($my->params)) { $pos = JString::strpos($my->params, 'timezone'); $offset = $systemOffset + $extraOffset; if ($pos === false) { $offset = $systemOffset + $extraOffset; } else { $offset = $my->getParam('timezone', -100); $myParams = $cMy->getParams(); $myDTS = $myParams->get('daylightsavingoffset'); $cOffset = !empty($myDTS) ? $myDTS : $config->get('daylightsavingoffset'); if ($offset == -100) { $offset = $systemOffset + $extraOffset; } else { $offset = $offset + $cOffset; } } $date->setOffset($offset); } else { $date->setOffset($systemOffset + $extraOffset); } } return $date; }