What "incorrect" time is it returning, and what is the expected time?
EDIT: Works fine on my server here in the good ol' US. I used the following code:
echo gmdate("h:i:s A", time() + 3600*(date("I"))) . "<br><br>" . date("h:i:s A");
and got the following results:
11:35:03 PM
05:35:03 PM
May it be known that i am GMT-6:00 US Central time..🙂