Multiple Timezones one the same page with PHP
Introduction
It is often necessary to display the time of different time zones on the same page.
For example, on the website
HeiHei.ru
This is done so that those who travel to Finland can see both Finnish and Moscow time at the same time.
It can be done with date_default_timezone_get command
$default_timezone =
date_default_timezone_get();
In this article you will learn how to show the time of several zones simultaneously on one page.
You can study simpler examples in the article
«Date and Time in PHP»
Show Moscow time
Start with a simple example - show only Moscow time.
Two variants possible - either your server default time is already Moscow time, or not.
If your default time is Moscow time, just print it
echo(date("H:i:s"));
22:59:29
If the time is not Moscow time, make it Moscow time
The date_default_timezone_set() function changes the timezone
date_default_timezone_set(
'Europe/Moscow');
echo(date("H:i:s"));
PHP code example
Now consider showing several timezones on one page at once.
Easiest is to use an object right away
DateTimeImmutable
so if you do not want to deal with the "functional" way - jump straight
here
$default_timezone = date_default_timezone_get();
echo($default_timezone);
echo'<br><br><br>';
$moscow_time = date("H:i:s");
echo'Moscow time ';
echo($moscow_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Helsinki');
echo'<br><br><br>';
$helsinki_time = date("H:i:s");
echo'Helsinki time ';
echo($helsinki_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Stockholm');
echo'<br><br><br>';
$stockholm_time = date("H:i:s");
echo'Stockholm time ';
echo($stockholm_time);
echo'<br><br><br>';
date_default_timezone_set('Europe/Moscow');
echo'<br><br><br>';
Result
Europe/Moscow
Moscow time 22:59:29
Helsinki time 22:59:29
Stockholm time 21:59:29
Code comments
$default_timezone = date_default_timezone_get();
Get the server default zone.
echo($default_timezone);
Print it. And decide whether we need this zone.
Since I want to show Moscow time anyway - I will use the default zone.
In the next line the moscow_time variable gets the server time value.
$moscow_time = date("H:i:s"); echo'Moscow time '; echo($moscow_time);
Displayed Moscow time.
Now change the timezone
date_default_timezone_set('Europe/Helsinki');
Assign a value to the helsinki_time variable
$helsinki_time = date("H:i:s");
Display
echo'Helsinki time ';
echo($helsinki_time);
And so on.
At the end, just in case, set the default time back to Moscow time.
date_default_timezone_set('Europe/Moscow');
DateTimeImmutable: OOP example
If you know OOP a little, easiest is to create three DateTimeImmutable objects and use them.
Show the time in
Armenia
,
Norway
and
Spain
$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>In Armenia: '; echo $armenia_time->format('H:i:s'); echo'<br>In Norway: '; echo $norway_time->format('H:i:s'); echo'<br>In Spain: '; echo $spain_time->format('H:i:s');
In Armenia: 23:59:29
In Norway: 21:59:29
In Spain: 21:59:29
UTC
$utc = new DateTimeImmutable('now', new DateTimeZone('UTC')); echo 'UTC: ' echo $utc->format('H:i:s');
UTC
19:59:29
How to refresh the time
PHP serves the time at load and cannot change it on the served page.
If you do not need automatic time refresh - just add a button
Code
<input type="button" value="Refresh page 1"
onClick="location.href=location.href">
<input type="button" value="Refresh page 2"
onClick="window.location.href=window.location.href">
Result
Both options may (or may not) have issues when you
navigated within the page by anchor.
In this case try
<button type="submit" onClick="refreshPage()">
Refresh page 3
</button>
<script>
function refreshPage(){
window.location.reload();
}
</script>
Time in different zones right now
| In Vladivostok | 05:59:29 |
| In Tokyo | 04:59:29 |
| In Novosibirsk | 02:59:29 |
| In Petersburg | 22:59:29 |
| In Helsinki | 22:59:29 |
| In Stockholm | 21:59:29 |
| In New York | 15:59:29 |
| In Los Angeles | 12:59:29 |
PHP timezone list
Specify without spaces between proper names and /
| 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 |
Article author: Andrei Olegovich