I coded this for another site a while back. It uses putenv() to alter the server timezone temporarily (note: putenv only changes it for the calculation. Your settings are safe), converts their string to a timestamp php can work with, changes the timezone again, and spits out the answer again. Pretty simple, but it took a long time to do. I searched the internet for ages before coding this, but noone else had made something like it. So enjoy!
Code:
<!-- TZC -->
<form action="<?php echo(htmlentities($_SERVER['PHP_SELF'])) ?>" method="POST">
<!-- PHP function -->
<?php
if ($_POST['time'] != NULL)
{
$time_input = htmlentities($_POST['time']);
$from = htmlentities($_POST['from']);
$to = htmlentities($_POST['to']);
putenv("TZ=".$from);
$time = strtotime($time_input);
putenv("TZ=".$to);
echo '<script type="text/javascript">window.alert("'.date("Y-m-d H:i:s", $time).'")</script>';
}
?>
<!-- Form -->
Convert From:
<select name="from">
<option value="Pacific/Apia">SST</option>
<option value="Pacific/Honolulu">HST</option>
<option value="America/Anchorage">AKST</option>
<option value="America/Los_Angeles" selected>PST</option>
<option value="America/Denver">MST</option>
<option value="America/Chicago">CST</option>
<option value="America/New_York">EST</option>
<option value="America/Halifax">AST</option>
<option value="America/Argentina/Catamarca">GMT-3</option>
<option value="Atlantic/South_Georgia">GMT-2</option>
<option value="Atlantic/Cape_Verde">GMT-1</option>
<option value="Europe/London">GMT</option>
<option value="Europe/Paris">GMT+1</option>
<option value="Europe/Athens">GMT+2</option>
<option value="Europe/Moscow">GMT+3</option>
<option value="Asia/Tbilisi">GMT+4</option>
<option value="Asia/Dushanbe">GMT+5</option>
<option value="Asia/Almaty">GMT+6</option>
<option value="Asia/Phnom_Penh">GMT+7</option>
<option value="Asia/Shanghai">GMT+8</option>
<option value="Asia/Tokyo">GMT+9</option>
<option value="Pacific/Port_Moresby">GMT+10</option>
<option value="Pacific/Noumea">GMT+11</option>
<option value="Pacific/Majuro">GMT+/-12</option>
</select>
Convert To:
<select name="to">
<option value="Pacific/Apia">SST</option>
<option value="Pacific/Honolulu">HST</option>
<option value="America/Anchorage">AKST</option>
<option value="America/Los_Angeles" selected>PST</option>
<option value="America/Denver">MST</option>
<option value="America/Chicago">CST</option>
<option value="America/New_York">EST</option>
<option value="America/Halifax">AST</option>
<option value="America/Argentina/Catamarca">GMT-3</option>
<option value="Atlantic/South_Georgia">GMT-2</option>
<option value="Atlantic/Cape_Verde">GMT-1</option>
<option value="Europe/London">GMT</option>
<option value="Europe/Paris">GMT+1</option>
<option value="Europe/Athens">GMT+2</option>
<option value="Europe/Moscow">GMT+3</option>
<option value="Asia/Tbilisi">GMT+4</option>
<option value="Asia/Dushanbe">GMT+5</option>
<option value="Asia/Almaty">GMT+6</option>
<option value="Asia/Phnom_Penh">GMT+7</option>
<option value="Asia/Shanghai">GMT+8</option>
<option value="Asia/Tokyo">GMT+9</option>
<option value="Pacific/Port_Moresby">GMT+10</option>
<option value="Pacific/Noumea">GMT+11</option>
<option value="Pacific/Majuro">GMT+/-12</option>
</select>
Time: <input type="text" name="time" value="<?php echo date("Y-m-d H:i:s") ?>"/>
<input type="submit" value="Convert!" />
</form>
If I knew how to use Ajax, I'd have it throw a popup, but I don't. Maybe that's something for another time. This code is Copyright Euan Reid, 2009, you can use it freely so long as any changes and additions you make, you post in this thread for others to use too. No need to credit me on your page. (Yes, Euan Reid is my real name)