2012-08-14 2 views
2

У меня проблема с таймером и не могу понять, в чем моя проблема. Вот мой код;xcode timePicker возвращает неправильное время

timePicker.timeZone = [NSTimeZone localTimeZone]; 
NSDate *selected = [timePicker date]; 

NSString *message = [[NSString alloc] initWithFormat: 
        @"The date and time you selected is: %@", selected]; 
UIAlertView *alert = [[UIAlertView alloc] 
         initWithTitle:@"Date and Time Selected" 
         message:message 
         delegate:nil 
         cancelButtonTitle:@"Yes, I did." 
         otherButtonTitles:nil]; 
[alert show]; 

Так, например, если я выбираю то время 2:55 вечера бдительные возвращает «2012-08-14 19:55:37 +0000»

Это должно быть что-то очень простое просто не может видеть его

ответ

4

NSDate не имеет концепции часовых поясов. Он просто хранит информацию о нейтральном времени. Поэтому вам нужно исправить ваш результат, чтобы компенсировать.

Вы можете создать экземпляр NSDateFormatter, а затем setTimeZone:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"..."]; 

//Timezone! 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]]; 

NSString *dateSting = [dateFormatter stringFromDate:myDate]; 
0

Вы должны добавить интервал разницу во времени между временем по Гринвичу и часовым страной зоны вы можете достичь его следующим образом:

(sender.date as NSDate).addingTimeInterval(TimeInterval(NSTimeZone.local.secondsFromGMT())) 
Смежные вопросы