Различные часовые пояса PHP на одной странице
Введение
Часто возникает необходимость отобразить время разных часовых поясов на одной странице.
Например, на сайте
HeiHei.ru
это сделано для того, чтобы те, кто едет в Финляндию видели одновременно и финское и московское время.
Отвечает за это команда
$default_timezone =
date_default_timezone_get();
В этой статье Вы узнаете о том как показать время сразу нескольких зон одновременно на одной странице.
Более простые примеры вы можете изучить в статье
«Дата и время в PHP»
Показать московское время
Начнём с простого примера - показать только московское время.
Здесь может быть два варианта - либо у вас на сервере время по умолчанию уже московское, либо нет.
Если у вас время по умолчанию московское просто выведите его
echo(date("H:i:s"));
11:36:34
Если время не московское, то его нужно сделать московским
За смену часового пояса отвечает функция date_default_timezone_set()
date_default_timezone_set(
'Europe/Moscow');
echo(date("H:i:s"));
Пример кода на PHP
Теперь разберём случай когда нужно показать время сразу нескольких поясов на одной странице.
Проще сделать это сразу с помощью объекта
DateTimeImmutable
поэтому если не хотите разбираться с "функциональным" способом - переходите сразу
сюда
$default_timezone = date_default_timezone_get();
echo($default_timezone);
echo'<br><br><br>';
$moscow_time = date("H:i:s");
echo'Московское время ';
echo($moscow_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Helsinki');
echo'<br><br><br>';
$helsinki_time = date("H:i:s");
echo'Время в Хельсинки ';
echo($helsinki_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Stockholm');
echo'<br><br><br>';
$stockholm_time = date("H:i:s");
echo'Время в Стокгольме ';
echo($stockholm_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Moscow');
echo'<br><br><br>';
Результат
Europe/Moscow
Московское время 11:36:34
Время в Хельсинки 10:36:34
Время в Стокгольме 09:36:34
Комментарии к коду
$default_timezone = date_default_timezone_get();
Получаем зону, которая стоит по умолчанию на сервере.
echo($default_timezone);
Выводим её. И думаем, нужна нам эта зона или нет.
Так как в любом случае хочу показать московское время - буду использовать зону по умолчанию.
В следующей строке переменной moscow_time присвоено значение сервеного времени.
$moscow_time = date("H:i:s"); echo'Московское время '; echo($moscow_time);
Отобразили московское время.
Теперь нужно изменить временную зону
date_default_timezone_set('Europe/Helsinki');
Присвоить переменной helsinki_time значение
$helsinki_time = date("H:i:s");
Отобразить
echo'Время в Хельсинки ';
echo($helsinki_time);
И так далее.
В конце, на всякий случай сделаем время по умолчанию снова московским.
date_default_timezone_set('Europe/Moscow');
DateTimeImmutable: пример с ООП
Если вы немного знакомы с ООП, проще будет создать три объекта DateTimeImmutable и использовать их.
Покажем время в
Армении
,
Норвегии
и
Испании
$armenia_time = new DateTimeImmutable('now', new DateTimeZone('Asia/Erevan')); $norway_time = new DateTimeImmutable('now', new DateTimeZone('Europe/Oslo')); $spain_time = new DateTimeImmutable('now', new DateTimeZone('Europe/Madrid')); echo'<br>В Армении: '; echo $armenia_time->format('H:i:s'); echo'<br>В Норвегии: '; echo $norway_time->format('H:i:s'); echo'<br>В Испании: '; echo $spain_time->format('H:i:s');
В Армении: 12:36:34
В Норвегии: 09:36:34
В Испании: 09:36:34
UTC
$utc = new DateTimeImmutable('now', new DateTimeZone('UTC')); echo 'UTC: ' echo $utc->format('H:i:s');
UTC
08:36:34
Как обновить время
PHP отдает время при загрузке и не может его менять на отданной странице.
Если Вам не обязательно обновлять время автоматически - можете просто добавить кнопку
Код
<input type="button" value="Обновить страницу 1"
onClick="location.href=location.href">
<input type="button" value="Обновить страницу 2"
onClick="window.location.href=window.location.href">
Результат
Оба этих варианта могут испытывать (а могут и не испытывать) проблемы в случае когда Вы
перешли внутри страницы по якорю.
В этом случае попробуйте
<button type="submit" onClick="refreshPage()">
Обновить страницу 3
</button>
<script>
function refreshPage(){
window.location.reload();
}
</script>
Время в разных поясаха в данный момент
Во Владивостоке | 18:36:34 |
В Токио | 17:36:34 |
В Новосибирске | 15:36:34 |
В Петербурге | 11:36:34 |
В Хельсинки | 10:36:34 |
В Стокгольме | 09:36:34 |
В Нью-Йорке | 04:36:34 |
В Лос-Анджелесе | 01:36:34 |
Список часовых поясов PHP
Указывать без пробелов между именами собственными и /
Africa / Abidjan | Africa / Accra |
Africa / Addis_Ababa | Africa / Algiers |
Africa / Asmara | Africa / Asmera |
Africa / Bamako | Africa / Bangui |
Africa / Banjul | Africa / Bissau |
Africa / Blantyre | Africa / Brazzaville |
Africa / Bujumbura | Africa / Cairo |
Africa / Casablanca | Africa / Ceuta |
Africa / Conakry | Africa / Dakar |
Africa / Dar_es_Salaam | Africa / Djibouti |
Africa / Douala | Africa / El_Aaiun |
Africa / Freetown | Africa / Gaborone |
Africa / Harare | Africa / Johannesburg |
Africa / Juba | Africa / Kampala |
Africa / Khartoum | Africa / Kigali |
Africa / Kinshasa | Africa / Lagos |
Africa / Libreville | Africa / Lome |
Africa / Luanda | Africa / Lubumbashi |
Africa / Lusaka | Africa / Malabo |
Africa / Maputo | Africa / Maseru |
Africa / Mbabane | Africa / Mogadishu |
Africa / Monrovia | Africa / Nairobi |
Africa / Ndjamena | Africa / Niamey |
Africa / Nouakchott | Africa / Ouagadougou |
Africa / Porto-Novo | Africa / Sao_Tome |
Africa / Timbuktu | Africa / Tripoli |
Africa / Tunis | Africa / Windhoek |
America
America / Adak | America / Anchorage |
America / Anguilla | America / Antigua |
America / Araguaina | America / Argentina/Buenos_Aires |
America / Argentina/Catamarca | America / Argentina/ComodRivadavia |
America / Argentina/Cordoba | America / Argentina/Jujuy |
America / Argentina/La_Rioja | America / Argentina/Mendoza |
America / Argentina/Rio_Gallegos | America / Argentina/Salta |
America / Argentina/San_Juan | America / Argentina/San_Luis |
America / Argentina/Tucuman | America / Argentina/Ushuaia |
America / Aruba | America / Asuncion |
America / Atikokan | America / Atka |
America / Bahia | America / Bahia_Banderas |
America / Barbados | America / Belem |
America / Belize | America / Blanc-Sablon |
America / Boa_Vista | America / Bogota |
America / Boise | America / Buenos_Aires |
America / Cambridge_Bay | America / Campo_Grande |
America / Cancun | America / Caracas |
America / Catamarca | America / Cayenne |
America / Cayman | America / Chicago |
America / Chihuahua | America / Coral_Harbour |
America / Cordoba | America / Costa_Rica |
America / Creston | America / Cuiaba |
America / Curacao | America / Danmarkshavn |
America / Dawson | America / Dawson_Creek |
America / Denver | America / Detroit |
America / Dominica | America / Edmonton |
America / Eirunepe | America / El_Salvador |
America / Ensenada | America / Fort_Wayne |
America / Fortaleza | America / Glace_Bay |
America / Godthab | America / Goose_Bay |
America / Grand_Turk | America / Grenada |
America / Guadeloupe | America / Guatemala |
America / Guayaquil | America / Guyana |
America / Halifax | America / Havana |
America / Hermosillo | America / Indiana/Indianapolis |
America / Indiana/Knox | America / Indiana/Marengo |
America / Indiana/Petersburg | America / Indiana/Tell_City |
America / Indiana/Vevay | America / Indiana/Vincennes |
America / Indiana/Winamac | America / Indianapolis |
America / Inuvik | America / Iqaluit |
America / Jamaica | America / Jujuy |
America / Juneau | America / Kentucky/Louisville |
America / Kentucky/Monticello | America / Knox_IN |
America / Kralendijk | America / La_Paz |
America / Lima | America / Los_Angeles |
America / Louisville | America / Lower_Princes |
America / Maceio | America / Managua |
America / Manaus | America / Marigot |
America / Martinique | America / Matamoros |
America / Mazatlan | America / Mendoza |
America / Menominee | America / Merida |
America / Metlakatla | America / Mexico_City |
America / Miquelon | America / Moncton |
America / Monterrey | America / Montevideo |
America / Montreal | America / Montserrat |
America / Nassau | America / New_York |
America / Nipigon | America / Nome |
America / Noronha | America / North_Dakota /Beulah |
America / North_Dakota /Center | America / North_Dakota /New_Salem |
America / Ojinaga | America / Panama |
America / Pangnirtung | America / Paramaribo |
America / Phoenix | America / Port-au-Prince |
America / Port_of_Spain | America / Porto_Acre |
America / Porto_Velho | America / Puerto_Rico |
America / Rainy_River | America / Rankin_Inlet |
America / Recife | America / Regina |
America / Resolute | America / Rio_Branco |
America / Rosario | America / Santa_Isabel |
America / Santarem | America / Santiago |
America / Santo_Domingo | America / Sao_Paulo |
America / Scoresbysund | America / Shiprock |
America / Sitka | America / St_Barthelemy |
America / St_Johns | America / St_Kitts |
America / St_Lucia | America / St_Thomas |
America / St_Vincent | America / Swift_Current |
America / Tegucigalpa | America / Thule |
America / Thunder_Bay | America / Tijuana |
America / Toronto | America / Tortola |
America / Vancouver | America / Virgin |
America / Whitehorse | America / Winnipeg |
America / Yakutat | America / Yellowknife |
Antarctica
Antarctica / Casey | Antarctica / Davis |
Antarctica / DumontDUrville | Antarctica / Macquarie |
Antactica / Mawson | Antarctica / McMurdo |
Antarctica / Palmer | Antarctica / Rothera |
Antarctica / South_Pole | Antarctica / Syowa |
Antarctica / Vostok |
Arctic
Arctic/Longyearbyen |
Asia
Asia / Aden | Asia / Almaty |
Asia / Amman | Asia / Anadyr |
Asia / Aqtau | Asia / Aqtobe |
Asia / Ashgabat | Asia / Ashkhabad |
Asia / Baghdad | Asia / Bahrain |
Asia / Baku | Asia / Bangkok |
Asia / Beirut | Asia / Bishkek |
Asia / Brunei | Asia / Calcutta |
Asia / Choibalsan | Asia / Chongqing |
Asia / Chungking | Asia / Colombo |
Asia / Dacca | Asia / Damascus |
Asia / Dhaka | Asia / Dili |
Asia / Dubai | Asia / Dushanbe |
Asia / Gaza | Asia / Harbin |
Asia / Hebron | Asia / Ho_Chi_Minh |
Asia / Hong_Kong | Asia / Hovd |
Asia / Irkutsk | Asia / Istanbul |
Asia / Jakarta | Asia / Jayapura |
Asia / Jerusalem | Asia / Kabul |
Asia / Kamchatka | Asia / Karachi |
Asia / Kashgar | Asia / Kathmandu |
Asia / Katmandu | Asia / Khandyga |
Asia / Kolkata | Asia / Krasnoyarsk |
Asia / Kuala_Lumpur | Asia / Kuching |
Asia / Kuwait | Asia / Macao |
Asia / Macau | Asia / Magadan |
Asia / Makassar | Asia / Manila |
Asia / Muscat | Asia / Nicosia |
Asia / Novokuznetsk | Asia / Novosibirsk |
Asia / Omsk | Asia / Oral |
Asia / Phnom_Penh | Asia / Pontianak |
Asia / Pyongyang | Asia / Qatar |
Asia / Qyzylorda | Asia / Rangoon |
Asia / Riyadh | Asia / Saigon |
Asia / Sakhalin | Asia / Samarkand |
Asia / Seoul | Asia / Shanghai |
Asia / Singapore | Asia / Taipei |
Asia / Tashkent | Asia / Tbilisi |
Asia / Tehran | Asia / Tel_Aviv |
Asia / Thimbu | Asia / Thimphu |
Asia / Tokyo | Asia / Ujung_Pandang |
Asia / Ulaanbaatar | Asia / Ulan_Bator |
Asia / Urumqi | Asia / Ust-Nera |
Asia / Vientiane | Asia / Vladivostok |
Asia / Yakutsk | Asia / Yekaterinburg |
Asia / Yerevan |
Atlantic
Atlantic / Azores | Atlantic / Bermuda |
Atlantic / Canary | Atlantic / Cape_Verde |
Atlantic / Kaeroe | Atlantic / Karoe |
Atlantic / Kan_Mayen | Atlantic / Madeira |
Atlantic / Reykjavik | Atlantic / South_Georgia |
Atlantic / St_Helena | Atlantic / Stanley |
Australia
Australia / ACT | Australia / Adelaide | Australia / Brisbane | Australia / Broken_Hill | Australia / Canberra |
Australia / Currie | Australia / Darwin | Australia / Eucla | Australia / Hobart | Australia / LHI |
Australia / Lindeman | Australia / Lord_Howe | Australia / Melbourne | Australia / North | Australia / NSW |
Australia / Perth | Australia / Queensland | Australia / South | Australia / Sydney | Australia / Tasmania |
Australia / Victoria | Australia / West | Australia / Yancowinna |
Europe
Europe / Amsterdam | Europe / Andorra | Europe / Athens | Europe / Belfast | Europe / Belgrade |
Europe / Berlin | Europe / Bratislava | Europe / Brussels | Europe / Bucharest | Europe / Budapest |
Europe / Busingen | Europe / Chisinau | Europe / Copenhagen | Europe / Dublin | Europe / Gibraltar |
Europe / Guernsey | Europe / Helsinki | Europe / Isle_of_Man | Europe / Istanbul | Europe / Jersey |
Europe / Kaliningrad | Europe / Kiev | Europe / Lisbon | Europe / Ljubljana | Europe / London |
Europe / Luxembourg | Europe / Madrid | Europe / Malta | Europe / Mariehamn | Europe / Minsk |
Europe / Monaco | Europe / Moscow | Europe / Nicosia | Europe / Oslo | Europe / Paris |
Europe / Podgorica | Europe / Prague | Europe / Riga | Europe / Rome | Europe / Samara |
Europe / San_Marino | Europe / Sarajevo | Europe / Simferopol | Europe / Skopje | Europe / Sofia |
Europe / Stockholm | Europe / Tallinn | Europe / Tirane | Europe / Tiraspol | Europe / Uzhgorod |
Europe / Vaduz | Europe / Vatican | Europe / Vienna | Europe / Vilnius | Europe / Volgograd |
Europe / Warsaw | Europe / Zagreb | Europe / Zaporozhye | Europe / Zurich |
Indian
Indian / Antananarivo | Indian / Chagos | Indian / Christmas | Indian / Cocos | Indian / Comoro |
Indian / Kerguelen | Indian / Mahe | Indian / Maldives | Indian / Mauritius | Indian / Mayotte |
Indian / Reunion |
Pacific
Pacific / Apia | Pacific / Auckland | Pacific / Chatham | Pacific / Chuuk | Pacific / Kaster |
Pacific / Kfate | Pacific / Knderbury | Pacific / Kakaofo | Pacific / Kiji | Pacific / Kunafuti |
Pacific / Galapagos | Pacific / Gambier | Pacific / Guadalcanal | Pacific / Guam | Pacific / Honolulu |
Pacific / Kohnston | Pacific / Kiritimati | Pacific / Kosrae | Pacific / Kwajalein | Pacific / Majuro |
Pacific / Marquesas | Pacific / Midway | Pacific / Nauru | Pacific / Niue | Pacific / Norfolk |
Pacific / Noumea | Pacific / Pago_Pago | Pacific / Palau | Pacific / Pitcairn | Pacific / Pohnpei |
Pacific / Ponape | Pacific / Port_Moresby | Pacific / Rarotonga | Pacific / Saipan | Pacific / Samoa |
Pacific / Tahiti | Pacific / Tarawa | Pacific / Tongatapu | Pacific / Truk | Pacific / Wake |
Pacific / Wallis | Pacific / Yap |