Bagaimana cara mengubah zona waktu dan waktu dalam simulator iPhone ?
objective-c
xcode
timezone
ios-simulator
Rahul Vyas
sumber
sumber
Jawaban:
Saya menduga itu menggunakan zona waktu sistem Anda, jadi mengubah TZ di System Preferences mungkin akan melakukan trik
sumber
Nyalakan kembali Simulator setelah mengubah preferensi waktu tanggal sistem dan Anda akan melihat perubahan tersebut tercermin. Ini berhasil untuk saya.
sumber
Akan bermanfaat jika Apple memberikan "tanggal Simulasikan" karena mereka menyediakan menu "Lokasi Simulasikan". Apa yang saya lakukan adalah menetapkan breakpoint segera setelah mendapatkan tanggal (menyimpannya dalam variabel) dan kemudian mengubah nilainya. Atau cukup modifikasi tempat di mana saya memeriksa perubahan tanggal dan membuatnya kembali benar.
sumber
Untuk keperluan mengambil tangkapan layar, Apple akhirnya memungkinkan untuk mengganti waktu pada bilah status simulator iOS (sejak Xcode 11 ) dengan menggunakan alat simctl :
sumber
Berikut adalah solusi yang tersedia dari iOS 13 dan Xcode 11 setidaknya. (tidak menguji dengan versi sebelumnya)
Secara default, iOS Simulator menunjukkan waktu apa pun pada Mac Anda, Anda dapat menggunakan baris perintah Xcode untuk menimpanya dengan perintah ini di terminal:
Ganti nama simulator dengan perangkat yang ingin Anda ubah.
Untuk bilah status Anda memiliki penggantian ini:
Waktu dapat berupa string apa pun. Tetapi jika Anda ingin perangkat menampilkan tanggal, Anda perlu menggunakan format ISO . Misalnya string tanggal ISO yang valid adalah '2007-01-09T10: 41: 00 + 01: 00'
Kalau tidak, Anda dapat menggunakan parameter waktu sebagai string dan itu akan menampilkan apa pun yang Anda lewati.
Dengan terima kasih kepada posting asli oleh Paul Hudson Inilah tautannya !
sumber
Anda dapat mengatur
TZ
variabel lingkungan dalam Skema Xcode untuk mengatur zona waktu hanya untuk aplikasi itu.Anda dapat menggunakan
UTC
,PST
,EST
, serta nama-nama zona berbasis tempat sepertiAmerica/Los_Angeles
. Ini tidak didokumentasikan dengan baik, tetapi saya curiga nama zona waktu mana pun bisa digunakan.Ini tidak didokumentasikan dengan baik, tetapi sumbernya adalah perwakilan Dukungan Pengembang Apple di forum pengembang .
sumber
Ketika mengubah zona waktu, saya menemukan cara termudah untuk melakukannya adalah dengan mengklik jam di menubar. Dan kemudian pilih "Open Date & Time Preferences" lalu pilih tab Time Zone.
Atau Preferensi Sistem -> Tanggal dan Waktu dan pilih tab Zona Waktu.
Hanya sebuah penunjuk untuk siapa saja yang mungkin tidak tahu jalan di OSX.
sumber
Ini adalah utas lama tetapi yang terdekat dengan pertanyaan saya. Saya perlu mensimulasikan zona waktu untuk Eropa, metode ini berfungsi untuk saya. Buka ketuk 'Zona Waktu' alih-alih ketuk 'Tanggal & Waktu'. Hapus centang pada kotak 'Tetapkan zona waktu secara otomatis menggunakan lokasi saat ini' dan geser bilah persegi panjang vertikal (dengan titik biru di atasnya) untuk mensimulasikan waktu sistem Anda.
sumber
Saya telah mengusulkan solusi otomatis untuk masalah mengubah waktu yang mencakup metode hacky swizzling: https://stackoverflow.com/a/34793193/829338 . Saya berasumsi bahwa itu juga harus bekerja untuk mengubah zona waktu.
Saya perlu menguji aplikasi saya secara otomatis, yang perlu mengubah waktu sistem. Saya lakukan, apa yang disarankan Tom: metode hacky bahagia berputar-putar.
Untuk tujuan demonstratif, saya hanya berubah
[NSDate date]
tetapi tidak[NSDate dateWithTimeIntervalSince1970:]
.Pertama, kebutuhan Anda untuk membuat metode kelas yang berfungsi sebagai [tanggal NSDate] baru. Saya menerapkannya hanya untuk menggeser waktu dengan perbedaan waktu konstan.
Sejauh ini, cukup mudah. Sekarang tiba bagian menyenangkan. Kami mendapatkan metode dari kedua kelas dan implementasi pertukaran (itu bekerja untuk saya di AppDelegate, tetapi tidak di kelas UITests saya). Untuk ini, Anda perlu mengimpor
objc/runtime.h
.sumber
Server build saya adalah UTC dan beberapa unit test saya membutuhkan zona waktu untuk menjadi PST. Menggunakan kategori di NSTimeZone Anda dapat mengesampingkan implementasi Apple untuk menggunakan kode Anda. Bekerja hanya untuk proyek cepat juga.
sumber
Setelah mengubah preferensi waktu tanggal sistem saya harus memilih
Hardware
>Reset All Content And Settings
.Hanya ini yang bekerja untuk saya di Versi 10.3 (SimulatorApp-880.5 CoreSimulator-681.5.4).
sumber