2012-06-18 3 views
0

Я показываю время. Он покажет мне: TIME: 2012-06-18 23:00:00 +0000 Но после использования NSDateFormatter я не знаю, почему это дает мне 00:00:00 AMNSDateFormatter не дает мне правильно

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"HH:mm:ss a"]; 

NSLog(@"TIME :%@",self.startDate); 

NSDate *date = [NSDate date]; 
NSString * _startTime = [dateFormatter stringFromDate:date]; 
NSLog(@"current time : %@",_startTime); 
NSString * _startTime1 = [dateFormatter stringFromDate:self.startDate]; 
NSLog(@"Start time : %@",_startTime1); 
[dateFormatter release]; 

**Result is** 

TIME :2012-06-18 23:00:00 +0000 
current time : 17:05:41 PM 
Start time : 00:00:00 AM 
+0

Возможный дубликат 10000 других потоков около NSDateFormatter, часовых поясов, и ошибочно полагая, что NSLog дисплеи времени в текущем часовом поясе. –

+0

Если я NSLog ** self.startDate **, он дает мне правильную дату от Джейсона. Но проблема в том, что после использования ** NSDateFormatter ** Это показывает мне это ** 00:00:00 AM ***. Но если я использую тот же ** NSDateFormatter ** с [NSDate date], он работает отлично. –

+0

Я согласен, что он работает отлично. Все, как и следовало ожидать. –

ответ

0

Ваши первые NSLog выходы дату в GMT (обратите внимание на конечный +0000). Объект NSDateFormatter будет форматировать дату в указанный часовой пояс. Ваши операторы NSLog показывают, что сохраненная дата в self.startDate составляет ровно 00:00:00 по крайней мере в одном часовом поясе, а форматтер установлен в этот часовой пояс. Форматирует значение по умолчанию для часового пояса для устройства. Вы можете установить часовой пояс форматировщика до 0 секунд от GMT, чтобы увидеть 23:00:00 PM из последнего NSLog заявления:

[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
Смежные вопросы