PHP: Lista de fuso horário (timezone)

Olá.

Recentemente precisei controlar o fuso horário em um dos meus aplicativos, pois o mesmo é acessado de vários locais do Brasil e, em breve, será acessado de outros países.

O primeiro passo foi buscar uma lista organizada de fuso horário no PHP. Encontrei um artigo interessante que apresenta todos os fusos de uma forma organizada. Esta mesma lista é utilizada no aplicativo Pingdom.

1 Passo: Criar uma tabela no seu banco de dados.

CREATE TABLE IF NOT EXISTS `timezone` (
 `timezid` int(11) NOT NULL auto_increment,
 `tz` varchar(250) NOT NULL,
 `gmt` text NOT NULL,
 PRIMARY KEY (`timezid`)
 ) ENGINE=InnoDB ;

2 Passo: Inserir os registros.

INSERT INTO timezone (timezid, tz, gmt) VALUES
(1, 'Pacific/Kwajalein', '(GMT -12:00) Eniwetok, Kwajalein'),
(2, 'Pacific/Samoa', '(GMT -11:00) Midway Island, Samoa'),
(3, 'Pacific/Honolulu', '(GMT -10:00) Hawaii'),
(4, 'America/Anchorage', '(GMT -9:00) Alaska'),
(5, 'America/Los_Angeles', '(GMT -8:00) Pacific Time (US & Canada) Los Angeles, Seattle'),
(6, 'America/Denver', '(GMT -7:00) Mountain Time (US & Canada) Denver'),
(7, 'America/Chicago', '(GMT -6:00) Central Time (US & Canada), Chicago, Mexico City'),
(8, 'America/New_York', '(GMT -5:00) Eastern Time (US & Canada), New York, Bogota, Lima'),
(9, 'Atlantic/Bermuda', '(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz'),
(10, 'Canada/Newfoundland', '(GMT -3:30) Newfoundland'),
(11, 'Brazil/East', '(GMT -3:00) Brazil, Buenos Aires, Georgetown'),
(12, 'Atlantic/Azores', '(GMT -2:00) Mid-Atlantic'),
(13, 'Atlantic/Cape_Verde', '(GMT -1:00 hour) Azores, Cape Verde Islands'),
(14, 'Europe/London', '(GMT) Western Europe Time, London, Lisbon, Casablanca'),
(15, 'Europe/Brussels', '(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris'),
(16, 'Europe/Helsinki', '(GMT +2:00) Kaliningrad, South Africa'),
(17, 'Asia/Baghdad', '(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg'),
(18, 'Asia/Tehran', '(GMT +3:30) Tehran'),
(19, 'Asia/Baku', '(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi'),
(20, 'Asia/Kabul', '(GMT +4:30) Kabul'),
(21, 'Asia/Karachi', '(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent'),
(22, 'Asia/Calcutta', '(GMT +5:30) Bombay, Calcutta, Madras, New Delhi'),
(23, 'Asia/Dhaka', '(GMT +6:00) Almaty, Dhaka, Colombo'),
(24, 'Asia/Bangkok', '(GMT +7:00) Bangkok, Hanoi, Jakarta'),
(25, 'Asia/Hong_Kong', '(GMT +8:00) Beijing, Perth, Singapore, Hong Kong'),
(26, 'Asia/Tokyo', '(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk'),
(27, 'Australia/Adelaide', '(GMT +9:30) Adelaide, Darwin'),
(28, 'Pacific/Guam', '(GMT +10:00) Eastern Australia, Guam, Vladivostok'),
(29, 'Asia/Magadan', '(GMT +11:00) Magadan, Solomon Islands, New Caledonia'),
(30, 'Pacific/Fiji', '(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka');

3 Passo: Crie um script php que busca o fuso horário e imprime a hora atual.

<?php
$conn = mysql_connect("SEU-HOST" ,"SEU-USUARIO" , "SUA-SENHA");
mysql_select_db("SUA-BASE");
$query = mysql_query("SELECT * FROM timezone", $conn);

echo "<h1>Fuso:</h1>";
while($row = mysql_fetch_array($query, MYSQL_BOTH)){
    echo $row["gmt"], "<BR>";
}

date_default_timezone_set("Brazil/East");
echo "<HR/>Hora atual: ", date("H:i:s");

date_default_timezone_set("Pacific/Honolulu");
echo "<BR/>Hora atual no hawaii: ", date("H:i:s");

Até a próxima

Anúncios