Comment changer l'heure et le fuseau horaire dans le simulateur iPhone ?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
la source
la source
Réponses:
Je suppose qu'il utilise le fuseau horaire de votre système, donc changer le TZ dans les préférences système ferait probablement l'affaire
la source
Redémarrez le simulateur après avoir modifié les préférences de date et d'heure du système et vous verrez les changements reflétés. Cela a fonctionné pour moi.
la source
Il serait utile qu'Apple fournisse une "Simuler la date" car ils fournissent un menu "Simuler l'emplacement". Ce que je fais est de définir un point d'arrêt immédiatement après avoir obtenu la date (en l'enregistrant dans une variable), puis de modifier la valeur. Ou modifiez simplement l'endroit où je vérifie un changement de date et faites-le revenir vrai.
la source
Dans le but de faire une capture d'écran, Apple a finalement permis de remplacer l'heure sur la barre d'état du simulateur iOS (depuis Xcode 11 ) en utilisant l' outil simctl :
la source
Voici une solution disponible depuis iOS 13 et Xcode 11 au moins. (n'a pas testé avec les versions précédentes)
Par défaut, le simulateur iOS montre quelle que soit l'heure sur votre Mac, cependant, vous pouvez utiliser la ligne de commande de Xcode pour remplacer cela avec cette commande dans le terminal:
Remplacez le nom du simulateur par le périphérique que vous souhaitez modifier.
Pour la barre d'état, vous avez ces remplacements:
L'heure peut être n'importe quelle chaîne. Mais si vous souhaitez que l'appareil affiche la date, vous devrez utiliser le format ISO . Par exemple, une chaîne de date ISO valide serait «2007-01-09T10: 41: 00 + 01: 00»
Sinon, vous pouvez utiliser le paramètre time comme une chaîne et il affichera tout ce que vous lui passez.
Merci à l'article original de Paul Hudson Voici le lien !
la source
Vous pouvez définir la
TZ
variable d'environnement dans un schéma Xcode pour définir le fuseau horaire uniquement pour cette application.Vous pouvez utiliser
UTC
,PST
,EST
, ainsi que les noms des fuseaux horaires territorialisées tels queAmerica/Los_Angeles
. Ce n'est pas bien documenté, mais je soupçonne que tout nom de fuseau horaire devrait fonctionner.Ce n'est pas bien documenté, mais la source est un représentant du support Apple Developer sur les forums des développeurs .
la source
Lors du changement de fuseau horaire, j'ai trouvé le moyen le plus simple de le faire en cliquant sur l'horloge dans la barre de menus. Et puis en sélectionnant "Ouvrir les préférences de date et d'heure" puis sélectionnez l'onglet Fuseau horaire.
Alternativement Préférences système -> Date et heure et sélectionnez l'onglet Fuseau horaire.
Juste un pointeur pour tous ceux qui ne connaissent peut-être pas OSX.
la source
C'est un vieux fil mais il est le plus proche de ma question. J'ai besoin de simuler le fuseau horaire pour l'Europe, cette méthode fonctionne pour moi. Allez sur «TimeZone» au lieu de «Date et heure». Décochez la case «Définir automatiquement le fuseau horaire en utilisant l'emplacement actuel» et faites glisser la barre rectangulaire verticale (avec un point bleu dessus) pour simuler l'heure de votre système.
la source
J'ai proposé une solution automatique au problème du changement d'heure qui inclut le swizzling de la méthode hacky: https://stackoverflow.com/a/34793193/829338 . Je suppose que cela devrait également fonctionner pour changer le fuseau horaire en conséquence.
J'avais besoin de tester mon application automatiquement, ce qui nécessitait de changer l'heure du système. Je l'ai fait, ce que Tom a suggéré: une bonne méthode de piratage.
À des fins de démonstration, je change seulement
[NSDate date]
mais pas[NSDate dateWithTimeIntervalSince1970:]
.Vous devez d'abord créer votre méthode de classe qui sert de nouvelle [date NSDate]. Je l'ai implémenté pour simplement décaler l'heure d'une différence de temps constante.
Jusqu'ici, assez facile. Vient maintenant la partie amusante. Nous obtenons les méthodes à la fois des classes et de l'implémentation d'échange (cela a fonctionné pour moi dans AppDelegate, mais pas dans ma classe UITests). Pour cela, vous devrez importer
objc/runtime.h
.la source
Mon serveur de construction est UTC et certains de mes tests unitaires nécessitaient que le fuseau horaire soit PST. En utilisant une catégorie sur NSTimeZone, vous pouvez remplacer l'implémentation d'Apple pour utiliser votre code. Fonctionne également pour les projets rapides uniquement.
la source
Après avoir changé les préférences de date et d'heure du système, j'ai dû choisir
Hardware
>Reset All Content And Settings
.Seul cela a fonctionné pour moi dans la version 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4).
la source