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...