Si todos están en Asia, por qué no usar algo como:
MYCITY=Tokyo
[NSTimeZone timeZoneWithName:@"Asia/$MYCITY"]
Si necesita más ciudades y zonas horarias, puede crear un archivo de lista de texto estático basado en todas las zonas horarias encontrado en/usr/share/zoneinfo.
crea el archivo 'timezones.by.city.txt' con el siguiente texto. (Truncan aquí.)
"Asia/Aden"
"Asia/Almaty"
"Asia/Amman"
"Asia/Anadyr"
"Asia/Aqtau"
"Asia/Aqtobe"
"Asia/Ashgabat"
"Asia/Ashkhabad"
"Asia/Baghdad"
"Asia/Bahrain"
"Asia/Baku"
"Asia/Bangkok"
"Asia/Beirut"
"Asia/Bishkek"
... etc.
"US/Alaska"
"US/Aleutian"
"US/Arizona"
"US/Central"
"US/Eastern"
"US/East-Indiana"
"US/Hawaii"
"US/Indiana-Starke"
"US/Michigan"
"US/Mountain"
"US/Pacific"
"US/Pacific-New"
"US/Samoa"
continuación:
MYCITY=Bangkok
MYTZ=`grep "$MYCITY" ./timezones.by.city.txt`
[df setTimeZone:[NSTimeZone timeZoneWithName:@"$MYTZ"]]
Gracias por el comentario. Muy útil para la conversión de "time_zone" del usuario de Twitter. – DavidAWalsh
Aquí hay una versión actualizada (con ejemplo de uso) para Rails 3.2: https://gist.github.com/rjregenold/5243201 –