Testar fusos horários no iOS é uma verificação típica que é difícil sem realmente viajar. Você pode aplicar todos os tipos de protocolos e versões simuladas do seu aplicativo, mas ter o iOS agindo como se estivesse realmente viajando entre fusos horários é um verdadeiro desafio. Idealmente, você testaria aplicativos como aplicativos de viagem de uma maneira que imita um viajante que entra em um avião em um fuso horário e sai em outro.
O simulador do Xcode pode iniciar seu aplicativo em outro fuso horário, mas não irá totalmente simular o comportamento de um dispositivo que está se movendo entre fusos horários. O Simulador permanece vinculado ao macOS para comportamentos do sistema, enquanto um dispositivo físico pode atualizar automaticamente sua hora real e seu fuso horário com base na localização. Eu tenho desenvolvido RocketSim desde 2019 e tentei habilitar essa funcionalidade várias vezes. Com o Xcode 27, finalmente encontrei uma maneira.
Testando outro fuso horário no iPhone
RocketSim permite que você simule uma localização em um iPhone ou iPad físico conectado por USB. Quando você move o dispositivo para outra localização simulada, o iOS pode atualizar automaticamente seu fuso horário do sistema de acordo. Como no vídeo acima, onde meu próprio dispositivo muda de fuso horário, altera a hora do sistema, ativa um modo diferente de foco por causa disso e ativa o modo de direção porque pensa que está realmente dirigindo.
Outro exemplo: Você pode começar em Amsterdã, iniciar seu aplicativo e simular uma viagem para Nova York. Seu dispositivo eventualmente mudará do horário europeu central para o horário leste, permitindo que você valide como seu aplicativo responde.
Este fluxo de trabalho para testar fusos horários no iOS requer:
- RocketSim 16.4 ou mais recente
- Xcode 27
- Um iPhone ou iPad físico conectado por USB
- O modo Desenvolvedor ativado no dispositivo
- Um aplicativo iniciado no dispositivo a partir do Xcode
No momento da escrita, o Xcode 27 ainda está em beta. A simulação de localização em dispositivos físicos depende das novas capacidades de controle de dispositivos e não está disponível em versões anteriores do Xcode.
Habilitando alterações automáticas de fusos horários
O RocketSim não altera diretamente o fuso horário do seu dispositivo. Em vez disso, ele simula uma localização através do Xcode. O iOS então usa essa coordenada para determinar a correspondente zona do sistema.
Você precisa habilitar duas configurações para que a verificação de fusos horários no iOS funcione:
- Abrir Configurações → Geral → Data e Hora e ativar Definir automaticamente.
- Abrir Configurações → Privacidade & Segurança → Serviços de Localização → Serviços do Sistema e ativar Configurar Fuso Horário.
Essas configurações permitem que o iOS derive a zona do sistema a partir da localização simulada. Sem elas, seu aplicativo receberá as novas coordenadas enquanto o dispositivo permanece no fuso horário existente.
Você pode esperar que o fuso horário seja atualizado imediatamente, mas isso nem sempre acontece. O iOS controla a atualização e pode levar algum tempo para aplicar o novo fuso horário.
Simulando uma nova localização
Inicie rodando seu aplicativo no dispositivo conectado através do Xcode. O RocketSim adicionará a versão compilada à seção Construções Recentes, ao lado da visualização de dispositivos físicos.
Selecione o seu aplicativo e abra a aba Localizações. De lá, você pode:
- Selecionar uma coordenada no mapa
- Rodar um cenário de localização embutido
- Ativar uma localização salva
- Simular uma rota de carro ou caminhada
- Reiniciar o dispositivo para a sua localização real

No screenshot acima, estou simulando uma rota de São Francisco até a Apple Park. Como normalmente estou no fuso horário de Amsterdã, o meu iPhone ativa o modo Sleep Focus. Também habilita os Cues de Movimento do Veículo ao detectar o modo de condução.
Imagine testar um aplicativo de viagem que exibe horários locais de partida e chegada. Você poderia salvar o Aeroporto de Amsterdã e o Aeroporto Internacional John F. Kennedy como ações de localização e alternar entre eles sempre que precisar validar o fluxo.
O RocketSim envia as coordenadas simuladas através do serviço de localização para dispositivos físicos do Xcode. O iOS recebe essas coordenadas como se o dispositivo estivesse realmente nesse local e pode atualizar sua zona horária do sistema em resposta.
Respondendo a mudanças de fuso horário
Uma mudança de fuso horário não necessariamente reinicia seu aplicativo. Se sua interface precisar ser atualizada enquanto está em execução, use TimeZone.autoupdatingCurrent:
let timeZone = TimeZone.autoupdatingCurrent
print(timeZone.identifier)
Diferente de um valor cacheado TimeZone.current, a variante automaticamente atualizada rastreia as mudanças feitas pelo sistema.
Você também pode observar NSSystemTimeZoneDidChange quando o conteúdo visível precisa ser atualizado:
Task { @MainActor in
for await _ in NotificationCenter.default.notifications(
named: .NSSystemTimeZoneDidChange
) {
// Atualize a IU dependente da zona horária.
}
}
Por exemplo, um aplicativo de calendário pode recarregar seu cronograma, enquanto um aplicativo de viagem poderia recalcula o horário local de chegada.
No entanto, responder à notificação é apenas parte da verificação. Você também desejará encerrar e relançar seu aplicativo após trocar as zonas. Formatações de data, calendários e valores de fuso horário são frequentemente cacheados durante o lançamento, o que pode resultar em bugs que só aparecem depois de reiniciar o processo.
Testando mudanças de fuso horário
A simulação de localização permite validar como seu aplicativo responde quando o iOS altera sua zona horária do sistema. O momento real permanece inalterado, mas sua representação local pode avançar ou recuar várias horas.
Eu recomendo validar:
- Se as datas e tempos visíveis são atualizados automaticamente
- Se a mesma
Dateaparece corretamente em outro fuso horário - Eventos de calendários e horas agendadas exibidas no horário local
- Rótulos relativos como “hoje” e “amanhã”, quando as zonas selecionadas cruzam uma fronteira de data
- Valores cacheados
Calendar,DateFormattereTimeZone - O comportamento enquanto o aplicativo está em execução e após um lançamento frio
Você não pode configurar uma data ou hora específica usando essa abordagem. Portanto, cenários como transições de economia de luz do dia, a passagem exata da meia-noite ou o envio programado de notificações ainda exigem mocks, relógios injetados ou testes automatizados dedicados.
Restaurando a zona horária real
Clique em Reset na aba Localizações do RocketSim quando terminar de testar. O dispositivo retornará à sua localização real, após o que o sistema iOS deve restaurar a correspondente zona horária do sistema. Novamente, pode levar algum tempo para que o sistema detecte isso. Ligar e desligar o modo avião no seu dispositivo físico pode acelerar o processo se necessário.
A mudança de fuso horário pode ficar para trás em relação ao reset da localização. Mantenha o dispositivo conectado e confirme que ambos os ajustes automáticos permanecem habilitados enquanto o iOS reavalia a localização.
Conclusão
Testar um aplicativo iOS em diferentes fusos horários geralmente requer mocks, alterações manuais nas configurações ou viagens reais. O RocketSim 16.4 e o Xcode 27 permitem reproduzir todo o comportamento do sistema usando um iPhone físico conectado por USB.
Você pode simular a viagem entre locais, observar mudanças automáticas no fuso horário do sistema e verificar como seu aplicativo responde tanto enquanto está em execução quanto após uma reinicialização fria. Combinado com testes unitários, essa abordagem ajuda a descobrir bugs relacionados à data antes que seus usuários os encontrem durante viagens internacionais.
Se você quiser melhorar ainda mais seu fluxo de trabalho para teste de localização, confira meu artigo sobre Simulação de Localização no Simulador do Xcode.
Sinta-se à vontade para me contatar ou tweetar comigo no Twitter se você tiver dicas adicionais ou feedback.

