2013-11-07 2 views
0

Я пишу приложение, которое использует UINotifications, и у меня есть код, функционирующий для уведомлений, но не могу получить правильный часовой пояс ,Я не могу понять, почему мой код для использования локального часового пояса для телефона не работает

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; 

// Get the current date 
NSDate *pickerDate = [self.datePicker date]; 
// Break the date up into components 
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSTimeZoneCalendarUnit) 
               fromDate:pickerDate]; 
NSDateComponents *timeComponents = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
               fromDate:pickerDate]; 

Я уверен, что я получаю это правильно в NSDateComponents выше

// Set up the fire time 
NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
[dateComps setDay:[dateComponents day]]; 
[dateComps setMonth:[dateComponents month]]; 
[dateComps setYear:[dateComponents year]]; 
[dateComps setHour:[timeComponents hour]]; 

Вот где я уверен, что временная зона должна быть установлена ​​для текущего местоположения телефона

[dateComps setTimeZone:[dateComponents timeZone]]; 

[dateComps setMinute:[timeComponents minute]]; 
[dateComps setSecond:[timeComponents second]]; 
NSDate *itemDate = [calendar dateFromComponents:dateComps]; 

NSLog(@"%@",[NSString stringWithFormat:@"%@",itemDate]); 

Я пытаюсь сбрасывать itemDate в файл журнала, и то, что я получаю, выглядит как GMT

2013-11-07 00:24:14.559 IMOB[796:60b] 2013-11-07 08:23:56 +0000 

и, как вы можете видеть в метку времени в начале файла журнала линии показывает, что правильно утром 12:24 пока выход читает 08:23

что неправильно

ответ

1

NSDate объекты всегда UTC. Используйте NSDateFormatter для регистрации значения в соответствии с вашим языковым стандартом.

[NSDateFormatter localizedStringFromDate:dateStyle:timeStyle:] очень удобно.

Смежные вопросы