2013-07-17 2 views
0
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 
NSTimeZone *gmt = [NSTimeZone systemTimeZone]; 
[dateFormatter setTimeZone:gmt]; 

NSString* fileTime = [infoArray objectAtIndex:5]; 
NSDate* sessionStartDate = [dateFormatter dateFromString:fileTime]; 
NSLog(@"%@", [infoArray objectAtIndex:5]); 
NSLog(@"%@", sessionStartDate); 

Два NSLogs:NSDateFormatter Коррупционные

2013-07-17 01:28:50 
2013-07-17 05:28:50 +0000 

Два должны быть одинаковыми, но нет. Час проявляется по-разному. Я попробовал «hh» вместо прописного, но тот же вопрос.

ответ

1

Ваш часовой пояс системы не GMT, в то время как NSDateFormatter анализирует строку даты w.r.t GMT (у вас есть часовой пояс, отсутствующий в строке даты, поэтому он предполагает, что часовой пояс будет GMT).

Таким образом, вы получаете время GMT по времени, преобразованному в ваше местное время.

Использование

NSTimeZone *gmt = [NSTimeZone timeZoneWithName:@"GMT"]; 

и вы получите как дата же.