На устройстве остается разница во времени симулятора iPhone? - PullRequest
1 голос
/ 26 октября 2011

В моем приложении для iPhone мне как-то нужно значение времени и оно выглядит так:

//Get the full time here
NSDate *now = [NSDate date];
//Seperate as time and date
NSArray *arr = [[[NSString alloc] initWithFormat:@"%@",now] componentsSeparatedByString:@" "];
//Get the time value
NSString *timeOnly = [arr objectAtIndex:1];
//Seperate it like hour, minute and second values
NSArray *timeOnlyArray = [timeOnly componentsSeparatedByString:@":"];
NSInteger hour = [[timeOnlyArray objectAtIndex:0] intValue];
NSInteger minute = [[timeOnlyArray objectAtIndex:1] intValue];

Все работает нормально, за исключением одного: несмотря на то, что время моего компьютера и моего симулятора установлено на мое местное время (GMT +2), значения, которые я получаю при отладке на симуляторе, - это время по Гринвичу (на 2 часа раньше моего локального).

Хорошо, я могу просто добавить 2 к моему значению часа, но я не знаю, будет ли оно таким же на устройстве. Если я опубликую его таким образом, он будет работать так же на устройстве? Или я должен добавить 2 часа, потому что приложение будет смотреть на время по Гринвичу в реальном устройстве?

1 Ответ

1 голос
/ 26 октября 2011

Возможно, вы захотите заглянуть в класс NSDateFormatter (как написано в AppleDocs: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html) Когда вы закончите, прочитайте здесь: Преобразование UTC NSDate в локальный часовой пояс Objective-C

Простое добавление 2 к значению часов не является хорошей практикой. Как вы справитесь с переходом на летнее время? Или когда кто-то в другом часовом поясе будет использовать ваше приложение?

Использование NSDateFormatterвероятно, будет лучшим решением для вас.

...