What a coincidence, I was just looking at one of my old scripts about this. This will get you started off; if you know a bit about PHP scripting, then it's quite easy to add a list to select the time zone and a submit button.
This script basically grabs the time from the server it is stored/running on, and it just adds or takes so many hours which is defined in the strtotime string
I think the trick would be to diddle with the timezone setting of the environment itself and use plain old time() (and date()) to do the leg work for you. The server's locale system should be able to handle DST.
You adjust the timezone by setting the TZ environment variable, for example, for me in New Zealand I'd use something like...
and then date() will give me the date in NZST (NZ Standard Time) or NZDT (NZ Daylight Time) depending on the time of year.