List of timezones as a drop menu
If you want to support users in multiple timezones to display time sensitive data like we do in our server monitoring application, Server Density, then you need to be able to display a list of all the available timezones.
This can be difficult if you’re not simply doing a list of GMT+1, GMT+2, etc. If you do this then the user needs to change it when daylight savings time comes into effect and it’s not very user friendly for users who are unsure of their current timezone.
The route we took was to display a list of major cities on a per continent basis so the user can select the city nearest them and get the right date and time every time.
The code you need can be found here:
This can be used with the tutorial I wrote up about handling timezone conversion with PHP.

I think a better approach would be to come up with a list of user friendly names (similar to the windows designations for timezones), and map those to Olson TZIDs. I wrote about a how I did this on my blog if you want to check it out: http://www.aviblock.com/blog/2009/03/12/presenting-a-list-of-timezones-to-the-user/
I also found a similarly laid out list on this site once too: http://vyew.com
This is a bad way to do it because you’re mapping “static” timezones (e.g. (GMT)) to geographical locations (e.g. Europe/London) which have “dyanamic” times. PHP will use the time of the location which will change throughout the year when daylight savings comes into effect. Europe/London will be GMT for 6 months but for the other 6 months it will will be BST, which is GMT+1.
For your list to be correct you have to use the actual “static” identifiers i.e. GMT, GMT+1, etc, as the option values.
It is also extra work for the user who will need to switch DST on/off at the appropriate time. If you do it the way I did at http://blog.boxedice.com/2009/03/21/handling-timezone-conversion-with-php-datetime/ then that will be handled automatically.
Please see my response in my comments on my blog (http://www.aviblock.com/blog/2009/03/12/presenting-a-list-of-timezones-to-the-user/comment-page-1/#comment-23)