2009-11-09 26 views
90

¿Cómo cambio la hora y la zona horaria en el simulador iPhone?¿Cómo cambiar la hora y la zona horaria en el simulador de iPhone?

+0

cambiar La hora y la fecha del sistema no son una solución. Eso afecta todas las aplicaciones de Mac, incluidas las marcas de tiempo de xcode. El comportamiento correcto es que cualquier cambio en la ubicación del Simulador tiene que cambiar la hora y la zona horaria. Todas las otras cosas son solo soluciones. Espero que Apple arregle esto lo antes posible – Rudi

Respuesta

141

supongo que utiliza su zona horaria del sistema, por lo que cambiar el TZ en Preferencias del sistema, probablemente haría el truco

Screenshot for description

+0

Hmm ... No tengo esta opción en mi simulador. En mi teléfono está en Configuración -> General -> Fecha y hora. En mi simulador, la sección de Fecha y Hora no existe. –

+5

Oh ...cámbielo en las preferencias del sistema de su máquina, no en la configuración del simulador. Derecha. ¡Eso funciono! –

+2

un problema en esto, el tiempo del simulador se actualiza después de 2 minutos de cambiar la hora del sistema. cualquier método que cambie el tiempo del simulador simultáneamente ... – AsifHabib

21

Reiniciar el simulador después de cambiar las preferencias de fecha y hora del sistema y veréis la cambios reflejados Funcionó para mí

+93

Solución horrible (por parte de Apple, no es tu respuesta). Este es exactamente el tipo de cosas que el simulador debería poder hacer como una alternativa segura para cambiar el tiempo de su sistema y potencialmente romper cosas en su computadora. – devios1

+3

@devios esto es más cierto que nunca con  Watch – Lewis42

+0

@ Lewis42, ¿qué quieres decir? –

1

Al cambiar la zona horaria, encontré que la manera más fácil de hacerlo era haciendo clic en el reloj de la barra de menú. Y luego seleccionando "Abrir fecha & Preferencias de tiempo" y luego selecciona la pestaña Zona horaria.

O bien Preferencias del sistema -> Fecha y hora y seleccione la pestaña Zona horaria.

Solo un puntero para cualquier persona que pueda no conocer bien OSX.

+3

Esta no es una respuesta, por lo que debería ser un comentario. La cantidad de desarrolladores de iOS que no conocen bien el OS X es ... cero. – phatmann

18

Sería útil si Apple proporcionara una "Fecha de simulación" ya que proporcionaba un menú "Simular ubicación". Lo que hago es establecer un punto de interrupción inmediatamente después de obtener la fecha (guardarla en una variable) y luego modificar el valor. O simplemente modifique el lugar donde verifico el cambio de fecha y haga que sea verdadero.

1

Este es un tema antiguo, pero es el más cercano a mi pregunta. Necesito simular la zona horaria para Europa, este método funciona para mí. Ir a 'TimeZone' toque en lugar de 'Fecha & Time' toque. Desmarque la casilla 'Establecer zona horaria automáticamente usando la ubicación actual' y deslice la barra vertical del rectángulo (con un punto azul) para simular la hora del sistema.

enter image description here

2

he propuesto una solución automática al problema de cambiar el tiempo que incluye el método hacky swizzling: https://stackoverflow.com/a/34793193/829338. Supongo que también debería funcionar para cambiar la zona horaria en consecuencia.


Necesitaba probar mi aplicación automáticamente, lo que requería cambiar el tiempo del sistema. Lo hice, lo que Tom sugirió: feliz método hacky swizzling.

Para propósitos demostrativos, solo cambio [NSDate date] pero no [NSDate dateWithTimeIntervalSince1970:].

Primero debe crear su método de clase que sirva como la nueva [fecha de NSDate]. Lo implementé para simplemente cambiar el tiempo por una diferencia de tiempo constante.

int timeDifference = 60*60*24; //shift by one day 
NSDate* (* original)(Class,SEL) = nil; 

+(NSDate*)date{ 
    NSDate* date = original([NSDate class], @selector(date)); 
    return [date dateByAddingTimeInterval:timeDifference]; 
} 

Hasta ahora, bastante fácil. Ahora viene la parte divertida. Obtenemos los métodos de ambas clases e implementación de intercambio (funcionó para mí en AppDelegate, pero no en mi clase UITests). Para esto, necesitará importar objc/runtime.h.

Method originalMethod = class_getClassMethod([NSDate class], @selector(date)); 
Method newMethod = class_getClassMethod([self class], @selector(date)); 

//save the implementation of NSDate to use it later 
original = (NSDate* (*)(Class,SEL)) [NSDate methodForSelector:@selector(date)]; 

//happy swapping 
method_exchangeImplementations(originalMethod, newMethod); 
+0

IIRC esto no funcionará para probar notificaciones locales. –

Cuestiones relacionadas