Часовой пояс в phpFoX

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Часовой пояс в phpFoX

Сообщение Slash » Пн сен 12, 2016 9:04 am

Заметил, что в движке отображается время на час меньше, то есть при выборе Asia/Omsk должно быть +6, а по факту +5. Немного покопавшись в коде, понял причину. В кэш генерируется файл time_zones.php, где содержится список часовых поясов (массив $aContent), начинается счет с ноля (с символом z):

Код: Выделить всё

  'z0' => 'Africa/Abidjan',
  'z1' => 'Africa/Accra',
  'z2' => 'Africa/Addis_Ababa',
  'z3' => 'Africa/Algiers',

На Омск выпадает z259:

Код: Выделить всё

  'z259' => 'Asia/Omsk'

Я для пробы заменил z259 на z260 и получил правильный часовой пояс (+6), для остальных зон отобразилось, тоже правильно. Принял решение, начинать массив не с z0, а с z1. Для этого я немного изменил функцию getTimeZones, в файле: module/core/include/service/core.class.php, вот так:

Код: Выделить всё

    public function getTimeZones()
    {
        
$cacheid $this->cache()->set('time_zones');
        if (!(
$zones $this->cache()->get($cacheid)) && PHPFOX_USE_DATE_TIME)
        {
            
$timezones DateTimeZone::listIdentifiers(2047);
            
sort($timezones);
            
$amount count($timezones);
            for (
$i 1$j 0$j $amount$i++, $j++)
            {
                
$timezones['z' $i] = $timezones[$j];
                unset(
$timezones[$j]);
            }

            
$this->cache()->save($cacheid$timezones);

            return 
$timezones;
        }
        else if (isset(
$zones) && is_array($zones) && !empty($zones))
        {
            return 
$zones;
        }

        return array(
            
'-12'  => '(GMT -12:00)',
            
'-11'  => '(GMT -11:00)',
            
'-10'  => '(GMT -10:00)',
            
'-9'   => '(GMT -9:00)',
            
'-8'   => '(GMT -8:00)',
            
'-7'   => '(GMT -7:00)',
            
'-6'   => '(GMT -6:00)',
            
'-5'   => '(GMT -5:00)',
            
'-4.5' => '(GMT -4:30)',
            
'-4'   => '(GMT -4:00)',
            
'-3.5' => '(GMT -3:30)',
            
'-3'   => '(GMT -3:00)',
            
'-2'   => '(GMT -2:00)',
            
'-1'   => '(GMT -1:00 hour)',
            
'0'    => '(GMT)',
            
'1'    => '(GMT +1:00 hour)',
            
'2'    => '(GMT +2:00)',
            
'3'    => '(GMT +3:00)',
            
'3.5'  => '(GMT +3:30)',
            
'4'    => '(GMT +4:00)',
            
'4.5'  => '(GMT +4:30)',
            
'5'    => '(GMT +5:00)',
            
'5.5'  => '(GMT +5:30)',
            
'5.75' => '(GMT +5:45)',
            
'6'    => '(GMT +6:00) Novosibirsk, Omsk',
            
'6.5'  => '(GMT +6:30)',
            
'7'    => '(GMT +7:00)',
            
'8'    => '(GMT +8:00)',
            
'9'    => '(GMT +9:00)',
            
'9.5'  => '(GMT +9:30)',
            
'10'   => '(GMT +10:00)',
            
'11'   => '(GMT +11:00)',
            
'12'   => '(GMT +12:00)'    
        
);
    } 

Изменения вступят в силу, только после очистки кэша.
Реклама

Вернуться в «phpFOX»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость