with rails in_time_zone current ios timezone nstimezone activesupport

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];