Por cierto, para detectar la fase horaria usé JS, despues la marco en un select, y cuando guarda la guardo en la base de datos, asi pre-marca en el select la fase horaria de primeras...
 
JS del auto detect... JQUERY   
Código Javascript
:
Ver original- // Esta funcion saca la zona horaria oficial del usuario 
- function timezoneDetect(){ 
-     var dtDate = new Date('1/1/' + (new Date()).getUTCFullYear()); 
-     var intOffset = 10000; //set initial offset high so it is adjusted on the first attempt 
-     var intMonth; 
-     var intHoursUtc; 
-     var intHours; 
-     var intDaysMultiplyBy; 
-   
-     //go through each month to find the lowest offset to account for DST 
-     for (intMonth=0;intMonth < 12;intMonth++){ 
-         //go to the next month 
-         dtDate.setUTCMonth(dtDate.getUTCMonth() + 1); 
-   
-         //To ignore daylight saving time look for the lowest offset. 
-         //Since, during DST, the clock moves forward, it'll be a bigger number. 
-         if (intOffset > (dtDate.getTimezoneOffset() * (-1))){ 
-             intOffset = (dtDate.getTimezoneOffset() * (-1)); 
-         } 
-     } 
-   
-     return intOffset * 60; 
- } 
php para el select   
Código PHP:
Ver original-                         '-43200' => '(GMT -12:00) Eniwetok, Kwajalein', 
-                         '-39600' => '(GMT -11:00) Midway Island, Samoa', 
-                         '-36000' => '(GMT -10:00) Hawaii', 
-                         '-32400' => '(GMT -9:00) Alaska', 
-                         '-28800' => '(GMT -8:00) Pacific Time (US & Canada)', 
-                         '-25200' => '(GMT -7:00) Mountain Time (US & Canada)', 
-                         '-21600' => '(GMT -6:00) Central Time (US & Canada), Mexico City', 
-                         '-18000' => '(GMT -5:00) Eastern Time (US & Canada), Bogota, Lima', 
-                         '-14000' => '(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz', 
-                         '-7200' => '(GMT -2:00) Mid-Atlantic', 
-                         '-3600' => '(GMT -1:00) Azores, Cape Verde Islands', 
-                         '0' => '(GMT 0) Western Europe Time, London, Lisbon, Casablanca', 
-                         '3600' => '(GMT +1:00) Madrid, Paris, Berlin, Copenhagen', 
-                         '7200' => '(GMT +2:00) Kaliningrad, South Africa', 
-                         '10400' => '(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg', 
-                         '12200' => '(GMT +3:30) Tehran', 
-                         '14000' => '(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi', 
-                         '16200' => '(GMT +4:30) Kabul', 
-                         '18000' => '(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent', 
-                         '19800' => '(GMT +5:30) Bombay, Calcutta, Madras, New Delhi', 
-                         '20700' => '(GMT +5:45) Kathmandu', 
-                         '21600' => '(GMT +6:00) Almaty, Dhaka, Colombo', 
-                         '25200' => '(GMT +7:00) Bangkok, Hanoi, Jakarta', 
-                         '28800' => '(GMT +8:00) Beijing, Perth, Singapore, Hong Kong', 
-                         '32400' => '(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk', 
-                         '34200' => '(GMT +9:30) Adelaide, Darwin', 
-                         '36000' => '(GMT +10:00) Eastern Australia, Guam, Vladivostok', 
-                         '39600' => '(GMT +11:00) Magadan, Solomon Islands, New Caledonia', 
-                         '43200' => '(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka' 
-                         ); 
-      
-   
-      
-     // Zona horaria 
-     echo '<div class="inputTxt"><select name="zonaTxt" style="width:97%;">'; 
-     foreach($faseHoraria as $hora => $nombreFase){ 
-     echo '<option value="'.$hora.'" title="'.$nombreFase.'">'.$nombreFase.'</option>'; 
-     } 
-     echo '</select></div>'; 
Pra el premarcado...   
Código Javascript
:
Ver original- $("select[name='zonaTxt'] option[value='"+faseHoraria+"']").attr("selected","selected"); 
Incluso como sabes el desfase por js, lo mandas con AJAX y la guardas si quieres para desde el principio saber su fase horaria en el login de la aplicacion...