2015-08-04 2 views
0

Я получаю дату в строковой форме с сервера, и мне нужно показать дату в соответствии с моим часовым поясом (Индийский: GMT +5: 30). Вот мой кодСтрока не преобразуется в дату в соответствии с часовым поясом

NSString *dateString = @"2015-08-10 11:45:10"; 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

    //Create the date assuming the given string is in GMT 
    dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 
    NSDate *date = [dateFormatter dateFromString:dateString]; 

    NSLog(@"%@",date); 

    NSLog(@"%@",[dateFormatter stringFromDate:date]); 

    //Create a date string in the local timezone 
    dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:[NSTimeZone localTimeZone].secondsFromGMT]; 
    NSString *localDateString = [dateFormatter stringFromDate:date]; 
    NSLog(@"date = %@", localDateString); 

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

    [dateFormatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:[NSTimeZone localTimeZone].secondsFromGMT]; 

    NSDate *date2 = [dateFormatter2 dateFromString:localDateString]; 

    NSLog(@"%@",date); 

И Бревно:

2015-08-10 11:45:10 +0000 (NSDate) 
2015-08-10 11:45:10 (NSString) 
date = 2015-08-10 17:15:10 (NSString) 
2015-08-10 11:45:10 +0000 (NSDate) 

Моя проблема с последнего журнала (2015-08-10 11:45:10 +0000) Почему не 2015-08-10 17:15:10 ??

ответ

0

Последняя строка печатает, что она делает, потому что вы печатаете NSDate, а NSDate не имеет часового пояса. Он буквально не имеет атрибута или внутреннего состояния, указывающего часовой пояс. Часовые пояса существуют только для представления данных пользователям, обычно, как вы делаете через NSDateFormatter. Но если вы зарегистрируете значение NSDate, вы получите строку GMT, так как у NSDate нет часового пояса.

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