Jak zmienić czas i strefę czasową w symulatorze iPhone'a ?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
źródło
źródło
Odpowiedzi:
Domyślam się, że używa strefy czasowej systemu, więc zmiana TZ w Preferencjach systemowych prawdopodobnie załatwi sprawę
źródło
Uruchom ponownie Symulator po zmianie systemowych preferencji dotyczących daty i czasu, a zmiany zostaną odzwierciedlone. U mnie to zadziałało.
źródło
Byłoby użyteczne, gdyby firma Apple udostępniła opcję „Symuluj datę”, ponieważ udostępniła menu „Symuluj lokalizację”. To, co robię, to ustawienie punktu przerwania natychmiast po pobraniu daty (zapisaniu jej w zmiennej), a następnie zmodyfikowanie wartości. Lub po prostu zmodyfikuj miejsce, w którym sprawdzam zmianę daty, i spraw, by zwróciło prawdę.
źródło
W celu wykonania zrzutu ekranu Apple wreszcie umożliwiło nadpisanie czasu na pasku stanu symulatora iOS (od Xcode 11 ) za pomocą narzędzia simctl :
źródło
Oto rozwiązanie dostępne przynajmniej z iOS 13 i Xcode 11. (nie testowano z poprzednimi wersjami)
Domyślnie symulator iOS pokazuje godzinę na komputerze Mac, jednak możesz użyć wiersza poleceń Xcode, aby zastąpić to tym poleceniem w terminalu:
Zastąp nazwę symulatora urządzeniem, które chcesz zmienić.
W przypadku paska stanu masz następujące nadpisania:
Czas może być dowolnym ciągiem. Ale jeśli chcesz, aby urządzenie wyświetlało datę, użyj formatu ISO . Na przykład prawidłowy ciąg daty ISO to „2007-01-09T10: 41: 00 + 01: 00”
W przeciwnym razie możesz użyć parametru czasu jako ciągu, a wyświetli on wszystko, co w nim przekażesz.
Z podziękowaniami dla oryginalnego posta Paula Hudsona Oto link !
źródło
Zmieniając strefę czasową, znalazłem najłatwiejszy sposób, aby to zrobić, klikając zegar na pasku menu. A następnie wybierając „Otwórz preferencje daty i czasu”, a następnie wybierz zakładkę Strefa czasowa.
Alternatywnie Preferencje systemowe -> Data i godzina i wybierz zakładkę Strefa czasowa.
To tylko wskazówka dla każdego, kto nie zna OSX.
źródło
To stary wątek, ale najbliższy mojemu pytaniu. Muszę zasymulować strefę czasową dla Europy, ta metoda działa dla mnie. Wybierz „Strefa czasowa” zamiast „Data i godzina”. Odznacz pole „Ustaw strefę czasową automatycznie, używając bieżącej lokalizacji” i przesuń pionowy prostokątny pasek (z niebieską kropką), aby zasymulować czas systemowy.
źródło
Możesz ustawić
TZ
zmienną środowiskową w schemacie Xcode, aby ustawić strefę czasową tylko dla tej aplikacji.Można użyć
UTC
,PST
,EST
jak również nazwy strefy czasowej miejsce na bazie takich jakAmerica/Los_Angeles
. Nie jest to dobrze udokumentowane, ale podejrzewam, że każda nazwa strefy czasowej powinna działać.Nie jest dobrze udokumentowany, ale źródłem jest przedstawiciel Apple Developer Support na forach dla programistów .
źródło
Zaproponowałem automatyczne rozwiązanie problemu zmiany czasu, które obejmuje hacky swizzling metod: https://stackoverflow.com/a/34793193/829338 . Zakładam, że powinno to również zadziałać przy odpowiedniej zmianie strefy czasowej.
Musiałem automatycznie przetestować moją aplikację, co wymagało zmiany czasu sys. Zrobiłem to, co zasugerował Tom: wesoła, hakerska metoda.
W celach demonstracyjnych zmieniam tylko,
[NSDate date]
ale nie[NSDate dateWithTimeIntervalSince1970:]
.Najpierw musisz utworzyć metodę klasy, która będzie służyć jako nowa [NSDate date]. Zaimplementowałem to, aby po prostu przesunąć czas o stałą różnicę czasu.
Jak dotąd całkiem proste. Teraz zaczyna się zabawa. Metody pobieramy z obu klas i implementacji wymiany (u mnie zadziałało w AppDelegate, ale nie w mojej klasie UITests). W tym celu musisz zaimportować
objc/runtime.h
.źródło
Mój serwer kompilacji to UTC, a niektóre z moich testów jednostkowych wymagały strefy czasowej PST. Korzystając z kategorii w NSTimeZone, możesz zastąpić implementację Apple, aby używać swojego kodu. Działa również w przypadku szybkich projektów.
źródło
Po zmianie systemowych preferencji dotyczących daty i czasu musiałem wybrać
Hardware
>Reset All Content And Settings
.Tylko to działało dla mnie w wersji 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4).
źródło