Multiple Timezones one the same page with PHP

Contents
Introduction
Show Moscow Time
Multiple Timezones on same the page: no OOP
Result
Explanation
DateTimeImmutable: with OOP
UTC
How to update time
List of timezones PHP
Africa
America
Asia
Australia
Europe
Oceania

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

Related articles
Development with PHP
Arrays in PHP
Date and Time in PHP - basics
How to display time of multiple timezones in PHP
How to add variable to url in PHP
json_decode
How to get screen size with PHP
Call function from another file
Premature end of chunk coded message body: closing chunk expected
Generate unique random numbers with PHP
Check your HTTP_USER_AGENT
Compare two dates
OOP
Namespaces in PHP
Comments in PHP
Cookies
PHP sessions
Authentication and Authorization in PHP 8
PHP linters we use
PHP errors: case studies
card_from_db(): banner card from a DB row
PHP versions: history in brief
Creating rules in .htaccess
require, require_once, include, include_once
Flat pair arrays: three pitfalls from the Related articles block
Deduplication in PHP
PHP course: zero to hero in 50 lessons

Search this site

Subscribe to Telegram channel @aofeed to follow new articles and updates to old ones

Go to channel

@aofeed

Ask a question in the Telegram group

@aofeedchat

Contacts and cooperation:
I recommend our hosting beget.com
Write to info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: