Как изменить время и часовой пояс в iPhone simulator?
Как изменить время и часовой пояс в iPhone симулятор?
7 ответов:
Я предполагаю, что он использует ваш системный часовой пояс, поэтому изменение TZ в Системных настройках, вероятно, сделает трюк
перезагрузите симулятор после изменения системных настроек даты и времени, и вы увидите отраженные изменения. Это сработало для меня.
было бы полезно, если бы Apple предоставила "имитировать дату", поскольку они предоставили меню "имитировать местоположение". Я устанавливаю точку останова сразу после получения даты (сохраняя ее в переменной), а затем изменяю значение. Или просто измените место, где я проверяю изменение даты, и верните его в true.
при смене часового пояса, я нашел самый простой способ сделать это, нажав на часы в меню. А затем выберите "Открыть настройки даты и времени", затем выберите вкладку часовой пояс.
альтернативно Системные настройки -> дата и время и выберите вкладку часовой пояс.
просто указатель для тех, кто не может знать свой путь вокруг OSX.
Это старый поток, но он ближе всего к моему вопросу. Мне нужно смоделировать часовой пояс для Европы, этот метод работает для меня. Перейти к "часовой пояс" нажмите вместо "дата и время" нажмите. Снимите флажок "установить часовой пояс автоматически с помощью текущего местоположения" и сдвиньте вертикальную прямоугольную полосу (с синей точкой на ней), чтобы имитировать системное время.
я предложил автоматическое решение проблемы изменения времени, которое включает в себя hacky метод swizzling:https://stackoverflow.com/a/34793193/829338. я предполагаю, что это также должно работать для изменения часового пояса соответственно.
мне нужно было проверить мое приложение автоматически, что потребовало изменения времени sys. Я сделал то, что предложил том: счастливый хакерский метод выпивки.
в демонстративных целях, я только изменить
[NSDate date]но не[NSDate dateWithTimeIntervalSince1970:].сначала вам нужно создать свой метод класса, который служит в качестве нового [nsdate date]. Я реализовал его, чтобы просто сдвинуть время на постоянную временную разницу.
int timeDifference = 60*60*24; //shift by one day NSDate* (* original)(Class,SEL) = nil; +(NSDate*)date{ NSDate* date = original([NSDate class], @selector(date)); return [date dateByAddingTimeInterval:timeDifference]; }до сих пор, довольно легко. А теперь самое интересное. Мы получаем методы из обоих классов и реализации exchange (он работал для меня в AppDelegate, но не в моем классе UITests). Для этого вам нужно будет импортировать
objc/runtime.h.Method originalMethod = class_getClassMethod([NSDate class], @selector(date)); Method newMethod = class_getClassMethod([self class], @selector(date)); //save the implementation of NSDate to use it later original = (NSDate* (*)(Class,SEL)) [NSDate methodForSelector:@selector(date)]; //happy swapping method_exchangeImplementations(originalMethod, newMethod);
мой сервер сборки-UTC, и некоторые из моих модульных тестов требовали, чтобы часовой пояс был PST. Используя категорию В NSTimeZone, вы можете переопределить реализацию Apple для использования вашего кода. Работает только для swift проектов тоже.
//NSTimeZone+DefaultTimeZone.h #import <Foundation/Foundation.h> @interface NSTimeZone (DefaultTimeZone) +(NSTimeZone *)defaultTimeZone; @end //NSTimeZone+DefaultTimeZone.m #import "NSTimeZone+DefaultTimeZone.h" @implementation NSTimeZone (DefaultTimeZone) +(NSTimeZone *)defaultTimeZone { return [NSTimeZone timeZoneWithName:@"America/Los_Angeles"]; } @end


Comments