Wie ändere ich Zeit und Zeitzone im iPhone- Simulator?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
quelle
quelle
Antworten:
Ich vermute, es verwendet Ihre Systemzeitzone, also würde das Ändern der TZ in den Systemeinstellungen wahrscheinlich den Trick tun
quelle
Starten Sie den Simulator neu, nachdem Sie die Einstellungen für Systemdatum und -zeit geändert haben. Die Änderungen werden angezeigt. Es hat bei mir funktioniert.
quelle
Es wäre nützlich, wenn Apple ein "Datum simulieren" und ein Menü "Ort simulieren" bereitstellen würde. Ich setze einen Haltepunkt unmittelbar nach dem Abrufen des Datums (Speichern in einer Variablen) und ändere dann den Wert. Oder ändern Sie einfach die Stelle, an der ich nach einer Datumsänderung suche, und lassen Sie sie als wahr zurückgeben.
quelle
Um einen Screenshot zu machen, hat Apple es endlich möglich gemacht, die Zeit in der Statusleiste des iOS-Simulators (seit Xcode 11 ) mithilfe des simctl- Tools zu überschreiben :
quelle
Hier ist eine Lösung, die mindestens für iOS 13 und Xcode 11 verfügbar ist. (nicht mit früheren Versionen getestet)
Standardmäßig zeigt der iOS-Simulator die Uhrzeit auf Ihrem Mac an. Sie können jedoch die Befehlszeile von Xcode verwenden, um dies mit diesem Befehl im Terminal zu überschreiben:
Ersetzen Sie den Simulatornamen durch das Gerät, das Sie ändern möchten.
Für die Statusleiste haben Sie folgende Überschreibungen:
Die Zeit kann eine beliebige Zeichenfolge sein. Wenn das Gerät jedoch das Datum anzeigen soll, müssen Sie das ISO-Format verwenden . Eine gültige ISO-Datumszeichenfolge wäre beispielsweise "2007-01-09T10: 41: 00 + 01: 00".
Andernfalls können Sie den Parameter time als Zeichenfolge verwenden und es wird angezeigt, was Sie darin übergeben.
Mit Dank an den Originalbeitrag von Paul Hudson Hier ist der Link !
quelle
Beim Ändern der Zeitzone fand ich den einfachsten Weg, dies zu tun, indem ich auf die Uhr in der Menüleiste klickte. Wählen Sie dann "Open Date & Time Preferences" und öffnen Sie die Registerkarte Time Zone.
Alternativ Systemeinstellungen -> Datum und Uhrzeit und wählen Sie die Registerkarte Zeitzone.
Nur ein Hinweis für alle, die sich mit OSX nicht auskennen.
quelle
Dies ist ein alter Thread, aber er kommt meiner Frage am nächsten. Ich muss die Zeitzone für Europa simulieren, diese Methode funktioniert für mich. Gehen Sie zu "TimeZone" anstelle von "Date & Time". Deaktivieren Sie das Kontrollkästchen "Zeitzone automatisch anhand des aktuellen Standorts festlegen" und schieben Sie die vertikale Rechteckleiste (mit dem blauen Punkt darauf), um Ihre Systemzeit zu simulieren.
quelle
Sie können die
TZ
Umgebungsvariable in einem Xcode-Schema festlegen, um die Zeitzone nur für diese App festzulegen.Sie können verwendet werden
UTC
,PST
,EST
sowie ortsbezogene Zeitzone Namen wieAmerica/Los_Angeles
. Es ist nicht gut dokumentiert, aber ich vermute, dass jeder Zeitzonenname funktionieren sollte.Es ist nicht gut dokumentiert, aber die Quelle ist ein Vertreter des Apple Developer Support in den Entwicklerforen .
quelle
Ich habe eine automatische Lösung für das Problem der Änderung der Zeit vorgeschlagen, die das Swizzling von Hacky-Methoden umfasst: https://stackoverflow.com/a/34793193/829338 . Ich gehe davon aus, dass dies auch funktionieren sollte, um die Zeitzone entsprechend zu ändern.
Ich musste meine App automatisch testen, was eine Änderung der Systemzeit erforderlich machte. Ich habe getan, was Tom vorgeschlagen hat: Happy Hacky Method Swizzling.
Zu Demonstrationszwecken ändere ich nur,
[NSDate date]
aber nicht[NSDate dateWithTimeIntervalSince1970:]
.Zuerst müssen Sie Ihre Klassenmethode erstellen, die als neues [NSDate-Datum] dient. Ich habe es implementiert, um die Zeit einfach um einen konstanten Zeitunterschied zu verschieben.
Bisher ziemlich einfach. Jetzt kommt der lustige Teil. Wir erhalten die Methoden aus beiden Klassen und der Exchange-Implementierung (es hat bei mir im AppDelegate funktioniert, aber nicht in meiner UITests-Klasse). Dazu müssen Sie importieren
objc/runtime.h
.quelle
Mein Build-Server ist UTC und einige meiner Unit-Tests benötigten die Zeitzone PST. Mithilfe einer Kategorie in NSTimeZone können Sie die Implementierung von Apple überschreiben, um Ihren Code zu verwenden. Funktioniert auch nur für schnelle Projekte.
quelle
Nachdem ich die Einstellungen für Systemdatum und -zeit geändert hatte, musste ich
Hardware
> wählenReset All Content And Settings
.Nur das hat bei mir in Version 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4) funktioniert.
quelle