ios - in_time_zone - strftime rails
¿Cómo usar NSTimeZone-timeZoneWithName: con un nombre de ciudad de Rails ActiveSupport? (6)
Gracias por las respuestas, pero parece que los nombres de las ciudades son solo un formato que utiliza Rails "ActiveSupport :: TimeZone". Así que solo tengo que mapearlo de vuelta. El mapa está aquí -> http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
Asigna la zona horaria del formato "ActiveSupport :: TimeZone" de Rails a otro formato que usa iOS (por ejemplo, "International Date Line West" => "Pacific / Midway", "Midway Island" => "Pacific / Midway", "Samoa" => "Pacífico / Pago_Pago", ...).
He creado un archivo plist que contiene una propiedad NSDictionary que se puede usar fácilmente para la asignación.
Edición: una versión actualizada (con ejemplo de uso) para Rails 3.2 (¡gracias RJ Regenold!)
Si solo tengo el nombre de la ciudad como Bangkok o Tokio , ¿cómo puedo proporcionar un parámetro de zona horaria en [NSTimeZone timeZoneWithName:@"Asia/Tokyo"]
donde también tiene continente y barra en frente de la ciudad?
Ya probé [NSTimeZone timeZoneWithName:@"Tokyo"]
, no funciona.
Puede encontrar el conjunto de datos y / o API de http://www.geonames.org/ útil para resolver este tipo de problema. Tienen la zona horaria olsen correcta (que es como se llama ''Asia / Tokio'') para una gran cantidad de ubicaciones y puede descargar y disputar los datos usted mismo o usar su API para obtener lo que necesita.
Puedes ver la lista de todos los nombres de zona horaria.
NSLog(@"%@", [NSTimeZone knownTimeZoneNames]);
Espero que esto te sea de utilidad.
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 encontradas en / usr / share / zoneinfo.
cree el archivo ''timezones.by.city.txt'' con el siguiente texto. (Truncado 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"
Entonces:
MYCITY=Bangkok
MYTZ=`grep "$MYCITY" ./timezones.by.city.txt`
[df setTimeZone:[NSTimeZone timeZoneWithName:@"$MYTZ"]]
NSArray *zones = [NSTimeZone knownTimeZoneNames];
Devuelve todo el conjunto de zonas horarias admitidas por su sistema.
Tienes que setTime
zona de tiempo como a continuación, que ya has probado.
[NSTimeZone timeZoneWithName:@"Asia/Tokyo"];
NSString * TimeZoneName=[[NSTimeZone localTimeZone]name];