NSDateFormatter и проблема с часовым поясом? - PullRequest
19 голосов
/ 09 декабря 2011

У меня есть строка со временем в GMT, и я хочу сделать ее в соответствии с часовым поясом системы, но она не работает должным образом -

NSLog(@"Time Str = %@",Time);

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"];

[NSTimeZone resetSystemTimeZone];

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]);

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

NSDate *date = [dateFormat dateFromString:Time];

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"date from string = %@",date);
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]);

Вывод на консоль -

//////////////////////////////////////////////////////////////////////////////////////////////////

Time Str = 09-12-2011 07:57

1009 * системный часовой пояс = смещение Азии / Калькутты (IST) 19800

дата из строки = 2011-12-09 02:27:00+ 0000

строка с даты = 09-12-2011 07:57

//////////////////////////////////////////////////////////////////////////////////////////////////

Калькутта составляет +5: 30 от GMT, поэтому время в дате должно быть 1:27, но егопоказывает 02:27.Также, когда я беру строку с этой даты, она показывает мне то же самое, что я использовал для создания даты, я хочу, чтобы строка обновлялась в соответствии с часовым поясом системы.

Спасибо

1 Ответ

51 голосов
/ 09 декабря 2011

Если строка даты в GMT, вы не можете использовать системный часовой пояс для создания NSDate из NSString.

заменить первое вхождение [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

с [dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

...