You can use the various date and time functions to get GMT time, set the location (timezone) and display local time, etc. It's all there for you. Usual problem is the system time of the server you are on, which is the baseline that they work from, and where in the world it is. Can be difficult if you are using shared or virtual hosting to know what timezone the box is physically in, what timezone the admins have set the system time as, and what time server the admins have set it to refer to.
Work around would be to generate an accurate GMT time and then add/subtract the offset for the timezone you are after. By accurate I mean print out a the GMT time from your server and then check if it is correct. Remember to set things up for seasonal adjustments.