¿Cómo cambio la hora y la zona horaria en el simulador de iPhone ?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
fuente
fuente
Respuestas:
Supongo que usa la zona horaria de su sistema, por lo que cambiar la TZ en las Preferencias del Sistema probablemente sería el truco.
fuente
Reinicie el simulador después de cambiar las preferencias de fecha y hora del sistema y verá reflejados los cambios. Funcionó para mi.
fuente
Sería útil si Apple proporcionara una "Fecha de simulación" ya que proporcionaba un menú de "Simular ubicación". Lo que hago es establecer un punto de interrupción inmediatamente después de obtener la fecha (guardarlo en una variable) y luego modificar el valor. O simplemente modifique el lugar donde verifico un cambio de fecha y haga que regrese verdadero.
fuente
Con el fin de tomar una captura de pantalla, Apple finalmente hizo posible anular el tiempo en la barra de estado del simulador de iOS (desde Xcode 11 ) usando la herramienta simctl :
fuente
Aquí hay una solución disponible de iOS 13 y Xcode 11 al menos. (no probado con versiones anteriores)
De forma predeterminada, el simulador de iOS muestra el tiempo que esté en su Mac, sin embargo, puede usar la línea de comando de Xcode para anular eso con este comando en la terminal:
Reemplace el nombre del simulador con el dispositivo que desea cambiar.
Para la barra de estado, tiene esta anulación:
El tiempo puede ser cualquier cadena. Pero si desea que el dispositivo muestre la fecha, deberá usar el formato ISO . Por ejemplo, una cadena de fecha ISO válida sería '2007-01-09T10: 41: 00 + 01: 00'
De lo contrario, puede usar el parámetro de tiempo como una cadena y mostrará lo que pase en él.
Gracias a la publicación original de Paul Hudson. ¡Aquí está el enlace !
fuente
Puede establecer la
TZ
variable de entorno en un Esquema Xcode para establecer la zona horaria solo para esa aplicación.Se puede utilizar
UTC
,PST
,EST
, así como los nombres de zona horaria basados en el lugar, tales comoAmerica/Los_Angeles
. No está bien documentado, pero sospecho que cualquier nombre de zona horaria debería funcionar.No está bien documentado, pero la fuente es un representante de Apple Developer Support en los foros de desarrolladores .
fuente
Al cambiar la zona horaria, encontré que la forma más fácil de hacerlo era haciendo clic en el reloj de la barra de menú. Y luego seleccionando "Abrir preferencias de fecha y hora" y luego seleccione la pestaña Zona horaria.
Alternativamente, Preferencias del sistema -> Fecha y hora y seleccione la pestaña Zona horaria.
Solo un puntero para cualquiera que no conozca OSX.
fuente
Este es un hilo viejo pero está más cerca de mi pregunta. Necesito simular la zona horaria de Europa, este método funciona para mí. Vaya al toque 'TimeZone' en lugar del toque 'Fecha y hora'. Desmarque la casilla 'Establecer zona horaria automáticamente usando la ubicación actual' y deslice la barra de rectángulo vertical (con un punto azul) para simular la hora de su sistema.
fuente
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 eso 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.
Con fines demostrativos, solo cambio
[NSDate date]
pero no[NSDate dateWithTimeIntervalSince1970:]
.Primero, necesita crear su método de clase que sirva como la nueva [fecha NSDate]. Lo implementé para simplemente cambiar el tiempo por una diferencia de tiempo constante.
Hasta ahora, bastante fácil. Ahora viene la parte divertida. Obtenemos los métodos de ambas clases y la implementación de intercambio (funcionó para mí en AppDelegate, pero no en mi clase UITests). Para esto necesitarás importar
objc/runtime.h
.fuente
Mi servidor de compilación es UTC y algunas de las pruebas de mi unidad necesitaban que la zona horaria fuera PST. Usando una categoría en NSTimeZone puede anular la implementación de Apple para usar su código. Funciona solo para proyectos rápidos.
fuente
Después de cambiar las preferencias de fecha y hora del sistema, tuve que elegir
Hardware
>Reset All Content And Settings
.Solo esto funcionó para mí en la versión 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4).
fuente