Pergunta

Pelo que entendi, chamando

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

fornece o fuso horário local do dispositivo. O que está me dando é "US/CENTRAL", e não consigo encontrar isso em nenhum lugar da lista de abreviações em NSTIMIMEZONE ABREVIATIONETIONY, ou a lista de nomes de fuso horário em NSTIMEZONE KNELEWTimeZoneNames. De onde vem este? Eu preciso passar o fuso horário do dispositivo atual para um aplicativo Rails, e ele entende coisas como "Austrália/Sydney" ou "America/Chicago", mas não "US/CENTRAL".

Como faço para pegar o que o LocalTimeZone está me dando e convertê -lo em uma corda que os trilhos podem entender (ou seja, qualquer fuso horário em Nomes de Zoonetes de Saiba, que é suposto Ser todos os nomes de zona horário que o sistema conhece?)

Foi útil?

Solução

Você provavelmente está usando ActiveSupport::TimeWithZone sem exigir o tzinfo gema:

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

Se você não precisar tzinfo, você obterá apenas um subconjunto de fusos horários, o que é bastante inútil.

EDITAR: Apenas para evitar confusão, a razão pela qual usei o particular Time#get_zone API é porque é isso que está sendo usado nos bastidores quando você liga Time#zone=. Se você não precisar tzinfo, chamando Time.send(:get_zone, "US/Central") retorna nil.

Outras dicas

Você está recebendo isso de dentro do simulador? Em caso afirmativo, o que esse comando retorna se você o executar de um terminal?
$ SystemSetup -getTimeZone

A GUI de configuração do fuso horário no Mac OS 10.5 definiria fusos horários para nós/*. Se você definir manualmente no console, poderá configurá -lo para um dos fusos horários esperados.

Execute isso para obter uma lista do válido e observe que a US/Central não está entre eles.
$ SystemSetup -ListTimeZones

Execute isso para defini -lo para a América/Chicago
$ SystemSetup -setTimeZone America/Chicago

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top