Ejemplo n.º 1
0
 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;
 }