NSDateFormatter and Time Zone issue?

徘徊边缘 提交于 2019-11-26 16:44:40

问题


I have a string with time in GMT and i want to make it according to the system time zone but its not working properly -

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]);

Output at console -

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

Time Str = 09-12-2011 07:57 AM

system time zone = Asia/Calcutta (IST) offset 19800

date from string = 2011-12-09 02:27:00 +0000

string from date = 09-12-2011 07:57 AM

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

Calcutta is +5:30 from GMT, so the time in date should be 1:27 but its showing 02:27. Also when i take a string from this date its showing me the same sting that i used to make date, i want the string updated according system time zone.

Thanks


回答1:


If the date string is in GMT you can't use your system Timezone to create the NSDate from the NSString.

replace the first occurrence of [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

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



来源:https://stackoverflow.com/questions/8442706/nsdateformatter-and-time-zone-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!