+1 Don't ask the user to enter data you already have. You're running on a computer; you know the system time. If you pre-populate the edit field then 99.9% of users can just confirm it, and in the cases where he needs to change something he can.
–
Monica CellioAug 17 '11 at 17:14

I am currently leaning towards going this way. I am already doing geolocation to determine the user's country etc, so it shouldn't be much trouble to get their timezone and prefill it :)
–
F21Aug 18 '11 at 0:46

I'd say that this depends on the users you're targeting with your product.

Are most of your users based in large cities?
Are most of your users computer savvy?

As I am always using the keyboard to navigate through forms, my favourite timezone selection method is one huge drop-down list with all kinds of options such as cities, countries (=capitals of the countries), UTC offsets, etc. The more options there are, the better: If the user is based in Moscow, for example, they could press M (for Moscow), R (for Russia), or 4 (for a 4 hour offset).

The benefit is that someone used to navigating through drop-down lists using a keyboard won't have to think and will always be a few keypresses away from the timezone they need.

However, this also makes the drop-down list messy and hard to navigate for those not using their keyboards (less computer-savvy users or those on mobile devices).

I did not implement anything on this, but I have an idea on how this could be done.

One way to do this is to use the user's system time using javascript and figure out the offset.

new Date()

would give out something like this
Wed Aug 17 2011 13:00:00 GMT+0530 (IST)

If you don't want to go with the above or have a backup, you could get the country of the user from his IP address, request user for his pincode. There are few services which provide the mapping from pincode to city and there should be services from a city to map the timezone.

Most of Timezone names are absolutely meaningless for people who are not living in the specific area. If you only have to set a personal Timezone (and users don't have to change it every time they are elsewhere) then dropdown should be enough (maybe some prediction capabilities are useful).

Another solution: ask for the current local time, everyone knows knows it and you can compare it to GMT and return the correct timezone. I have never tried this, and don't know if there is anything impossible in this approach - think about it :)

Edit: One disadvantage of asking for time solution is, that people might think that they have to hurry for some reason - don't know, depends on context. Maybe an explanation is necessary for this one.