新浪微博返回的時(shí)間都是,帶有時(shí)區(qū)的GMT時(shí)間,平時(shí)使用慣了中國的時(shí)間表示格式,GMT時(shí)間轉(zhuǎn)換一時(shí)無從下手。找了好一會兒,終于找到了對應(yīng)的時(shí)間格式化字符串:
Tue May 31 17:46:55 +0800 2011
對應(yīng):
EEE MMM d HH:mm:ss Z yyyy
都是對應(yīng)關(guān)系,其中的Z應(yīng)該是Zone,表示時(shí)區(qū)的意思,對應(yīng)上面的+0800(北京時(shí)間,是東八時(shí)區(qū))。
iOS解析補(bǔ)充:
如果你在iOS中解析新浪微博的日期格式,只是設(shè)置NSDateFormatter實(shí)例的dateFormat屬性為上面的格式化字符串。在模擬器(前提是模擬器的“設(shè)置”->“多語言環(huán)境”->“英國/美國”)下是能夠?qū)崿F(xiàn)解析的,但是在真機(jī)調(diào)試時(shí),卻無法解析。
那是因?yàn)樵谥袊貐^(qū)的,操作系統(tǒng)的環(huán)境一般都是“中國”、“中國香港”、“中國澳門等”,而上面的這種格式化字符串只針對英文操作系統(tǒng)的環(huán)境下才有效。
所以為了保證在任何設(shè)置下都能解析,我們需要對NSDateFormatter實(shí)例的locale屬性進(jìn)行設(shè)置(強(qiáng)制采用“en-US”的方式進(jìn)行轉(zhuǎn)換):
示例:
//解析新浪微博中的日期
+ (NSString*)resolveSinaWeiboDate:(NSString*)date{
NSDateFormatter *iosDateFormater=[[[NSDateFormatter alloc]init]autorelease];
iosDateFormater.dateFormat=@"EEE MMM d HH:mm:ss Z yyyy";
//必須設(shè)置,否則無法解析
iosDateFormater.locale=[[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]autorelease];
NSDate *date=[iosDateFormater dateFromString:date];
//目的格式
NSDateFormatter *resultFormatter=[[[NSDateFormatter alloc]init]autorelease];
[resultFormatter setDateFormat:@"MM月dd日 HH:mm"];
return [GlobalInstance NSDateToNSString:date withFormatter:resultFormatter];
}
/*
*日期轉(zhuǎn)化為日期格式的字符串
*/
-(NSString*)NSDateToNSString:(NSDate*)date withFormatter:(NSDateFormatter*)formatter{
NSString? ? *dateString=[formatter stringFromDate:date];
return dateString;
}