Generate a dropdown list of timezones in php

Applications often allow users to select their timezones for reporting the proper time properly. Here is a quick function that can be used to generate a dropdown list of timezones that is easy to read and understand.

<?php

function get_timezones()
{
	$o = array();
	
	$t_zones = timezone_identifiers_list();
	
	foreach($t_zones as $a)
	{
		$t = '';
		
		try
		{
			//this throws exception for 'US/Pacific-New'
			$zone = new DateTimeZone($a);
			
			$seconds = $zone->getOffset( new DateTime("now" , $zone) );
			$hours = sprintf( "%+02d" , intval($seconds/3600));
			$minutes = sprintf( "%02d" , ($seconds%3600)/60 );
	
			$t = $a ."  [ $hours:$minutes ]" ;
			
			$o[$a] = $t;
		}
		
		//exceptions must be catched, else a blank page
		catch(Exception $e)
		{
			//die("Exception : " . $e->getMessage() . '<br />');
			//what to do in catch ? , nothing just relax
		}
	}
	
	ksort($o);
	
	return $o;
} 

$o = get_timezones();
?>

<html>
<body>
<select name="time_zone">
<?php
	foreach($o as $tz => $label)
	{
		echo "<option value="$tz">$label</option>";
	}
?>
</select>
</body>
</html>






Last Updated On : 22nd November 2012

Subscribe to get updates delivered to your inbox

1 Comment + Add Comment

  • Awesome!!!!! Exactly what I needed. Thank you for taking the time to build/post this!

Leave a comment