Como altero a hora e o fuso horário no simulador do iPhone ?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
fonte
fonte
Respostas:
Acho que ele usa o fuso horário do sistema, portanto, alterar a TZ nas Preferências do Sistema provavelmente faria o truque
fonte
Reinicie o Simulador depois de alterar as preferências de data e hora do sistema e você verá as alterações refletidas. Funcionou para mim.
fonte
Seria útil se a Apple fornecesse uma "Data de simulação", pois eles forneciam um menu "Simular local". O que faço é definir um ponto de interrupção imediatamente após obter a data (salvando-a em uma variável) e depois modificar o valor. Ou apenas modifique o local em que verifico uma alteração de data e a faço retornar.
fonte
Com o objetivo de tirar uma captura de tela, a Apple finalmente tornou possível substituir o tempo na barra de status do simulador iOS (desde o Xcode 11 ) usando a ferramenta simctl :
fonte
Aqui está uma solução disponível no iOS 13 e Xcode 11, pelo menos. (não testou com versões anteriores)
Por padrão, o iOS Simulator mostra a qualquer hora no seu Mac; no entanto, você pode usar a linha de comando do Xcode para substituí-la por este comando no terminal:
Substitua o nome do simulador pelo dispositivo que você deseja alterar.
Para a barra de status, você tem essas substituições:
O horário pode ser qualquer sequência. Mas se você quiser que o dispositivo mostre a data, precisará usar o formato ISO . Por exemplo, uma sequência de datas ISO válida seria '2007-01-09T10: 41: 00 + 01: 00'
Caso contrário, você pode usar o parâmetro time como uma string e ele exibirá o que você passar nele.
Com agradecimentos ao post original de Paul Hudson Aqui está o link !
fonte
Ao alterar o fuso horário, achei a maneira mais fácil de fazer isso clicando no relógio na barra de menus. E, em seguida, selecione "Abrir preferências de data e hora" e selecione a guia Fuso horário.
Como alternativa, Preferências do sistema -> Data e hora e selecione a guia Fuso horário.
Apenas um ponteiro para quem não conhece o OSX.
fonte
Este é um tópico antigo, mas é o mais próximo da minha pergunta. Eu preciso simular o fuso horário na Europa, esse método funciona para mim. Vá para o toque em 'Fuso horário' em vez do toque em 'Data e hora'. Desmarque a caixa 'Definir fuso horário automaticamente usando o local atual' e deslize a barra retangular vertical (com um ponto azul) para simular a hora do sistema.
fonte
Você pode definir a
TZ
variável de ambiente em um esquema Xcode para definir o fuso horário apenas para esse aplicativo.Você pode usar
UTC
,PST
,EST
, bem como nomes de fuso horário de base local, tais comoAmerica/Los_Angeles
. Não está bem documentado, mas suspeito que qualquer nome de fuso horário deva funcionar.Não está bem documentado, mas a fonte é um representante de suporte ao desenvolvedor da Apple nos fóruns de desenvolvedores .
fonte
Propus uma solução automática para o problema de alterar o tempo que inclui o swizzling do método hacky: https://stackoverflow.com/a/34793193/829338 . Suponho que também funcione para alterar o fuso horário de acordo.
Eu precisava testar meu aplicativo automaticamente, o que exigia a alteração do horário do sistema. Eu fiz, o que Tom sugeriu: método hacky feliz swizzling.
Para fins demonstrativos, apenas mudo,
[NSDate date]
mas não[NSDate dateWithTimeIntervalSince1970:]
.Primeiro, você precisa criar seu método de classe que serve como a nova [data do NSDate]. Eu o implementei para simplesmente mudar o tempo por uma constante diferença de tempo.
Até agora, muito fácil. Agora vem a parte divertida. Obtemos os métodos das duas classes e da implementação do Exchange (funcionou para mim no AppDelegate, mas não na minha classe UITests). Para isso, você precisará importar
objc/runtime.h
.fonte
Meu servidor de compilação é UTC e alguns dos meus testes de unidade precisavam que o fuso horário fosse PST. Usando uma categoria no NSTimeZone, você pode substituir a implementação da Apple para usar seu código. Também funciona para projetos rápidos também.
fonte
Depois de alterar as preferências de data e hora do sistema, tive que escolher
Hardware
>Reset All Content And Settings
.Somente isso funcionou para mim na versão 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4).
fonte