@MindzaiDec 01.2009 — #date_default_timezone_set() is my preferred solution too. If you have a user system you can also let them choose a timezone, pass it to this function and have dates displayed properly without touching the body of your code.
(the situation complicates itself further if you are storing timestamps in MySQL)
EDIT: ipinfodb returns an hour offset, not an identifier. So you would have to use a function to get an identifier from the offset.....OR you could set a session variable that contains the offset returned from ipinfodb and use