Pregunta

Por lo que tengo entendido llamando

NSLog(@"Local Time Zone %@",[[NSTimeZone localTimeZone] name]);

le proporciona la zona horaria local del dispositivo.Lo que me esta dando es "Estados Unidos/Centro", y no puedo encontrarlo en ninguna parte de la lista de abreviaturas en [Diccionario de abreviaturas de NSTimeZone], o la lista de nombres de zonas horarias en [NSTimeZone nombres de zonas horarias conocidos].¿De dónde viene éste?Necesito pasar la zona horaria actual del dispositivo a una aplicación Rails y esta entiende cosas como "Australia/Sídney" o "América/Chicago", pero no "Estados Unidos/Centro".

¿Cómo tomo lo que me está dando localTimeZone y lo convierto en una cadena que Rails pueda entender (es decir,cualquier zona horaria enknownTimeZoneNames, que es supuesto ser todos los nombres de zonas horarias que el sistema conoce?)

¿Fue útil?

Solución

Es probable usando ActiveSupport::TimeWithZone sin haber requerido la gema tzinfo:

$ irb -rrubygems -ractivesupport -rtzinfo
>> Time.send(:get_zone, "US/Central").now
=> Tue, 17 Nov 2009 04:27:23 CST -06:00

Si usted no requiere tzinfo, sólo conseguirás un subconjunto de las zonas horarias que es bastante inútil.

editar : Sólo para evitar la confusión, la razón por la que se utilizaba la API Time#get_zone privada es porque eso es lo que se utiliza en segundo plano cuando usted llama Time#zone=. Si usted no requiere tzinfo, Time.send(:get_zone, "US/Central") llamada vuelve nil.

Otros consejos

¿Usted está consiguiendo que desde dentro del simulador? Si es así lo que hace este comando devuelve para si se ejecuta desde un terminal?
$ Systemsetup -gettimezone

La interfaz gráfica de configuración zona horaria en Mac OS 10.5 establecería zonas horarias a US / *. Si ajusta manualmente desde la consola se puede establecer a una de las zonas horarias esperados.

Ejecutar este para obtener una lista de la validez y observe que EEUU / central no está entre ellos.
$ Systemsetup -listtimezones

Ejecutar este configurarlo a América / Chicago Estados Unidos $ Systemsetup -settimezone America / Chicago

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top