Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
662 views
in Technique[技术] by (71.8m points)

objective c - NSDateFormatter: how to convert date string with 'GMT' to local NSDate?

I need to convert a date string retrieved from a server, to local NSDate, the string looks like:

"Fri, 30 Nov 2012 00:35:18 GMT"

But now it is Friday, 30th Nov, 11:36 AM, so how do I convert the string to a meaningful local NSDate?

I found:

iPhone: NSDate convert GMT to local time

But looks like it does the opposite.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Note that NSDate's always store the date, internally, in GMT. You then use a date formatter to create a string in your local time zone. In this case, you are starting with a string so need to use the date formatter to create the date in the first place, and then use it again to create a string in your local time zone (which it defaults to when the timezone is not specified).

NSString *dateString           = @"Fri, 30 Nov 2012 00:35:18 GMT";

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat       = @"EEE, dd MM yyyy HH:mm:ss zzz";

NSDate *date                   = [dateFormatter dateFromString:dateString];
NSString *localDateString      = [dateFormatter stringFromDate:date];

NSLog(@"%@", localDateString);
// Results:  Thu, 29 11 2012 19:35:18 EST

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...