NSDateFormatter不适用于Twitterdate

我想格式化一个date,我从twitter使用STTwitter图书馆。

但是我迄今为止尝试过的代码没有工作。

从twitter获取date的代码:

NSString *dateString = [status valueForKey:@"created_at"]; 

这会返回制作推文的时间,date,时区和年份,看起来很乱。

我试着使用下面的代码来转换这个,使之更整洁:

 NSDateFormatter *dateFormatter =[[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"MMddHHmm"]; NSDate *dateFromString = [dateFormatter dateFromString:dateString]; NSLog(@"%@", dateFromString); dateFormatter =[[NSDateFormatter alloc]init]; [dateFormatter setDateFormat:@"dd MMMM' at 'hhmm a"]; NSString *mydate=[dateFormatter stringFromDate:dateFromString]; 

然后尝试将结果放在文本标签中:

 cell.detailTextLabel.text = my date; 

我已经尝试了许多不同的date格式化的变体,但没有工作,我不知道为什么。

谢谢你的帮助 :)

你使用的date格式甚至不closures结果中使用的datestring,就像Fri Nov 18 20:35:49 +0000 2011

 NSString *dateStr = @"Fri Nov 18 20:35:49 +0000 2011"; NSDateFormatter *dateFormatter= [NSDateFormatter new]; dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; [dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss Z yyyy"]; NSDate *date = [dateFormatter dateFromString:dateStr]; 

真正的技巧是在使用的语言环境中,因为date是以英文本地化的。

STTwitter有一个类别 :

 NSString *s = [tweet valueForKey:@"created_at"]; NSDate *date = [[NSDateFormatter stTwitterDateFormatter] dateFromString:s]; 

我创build了Swift实现它的要点: https : //gist.github.com/appzzman/62339fcd10bbe8fce256它需要Twitterdate,并可以指定date的输出格式。

 import UIKit func parseTwitterDate(twitterDate:String, outputDateFormat:String)->String?{ let formatter = NSDateFormatter() formatter.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy" var indate = formatter.dateFromString(twitterDate) var outputFormatter = NSDateFormatter() outputFormatter.dateFormat = "hh:mm a dd:MM:yy" var outputDate:String? if let d = indate { outputDate = outputFormatter.stringFromDate(d) } return outputDate; } var str = "Wed Sep 02 19:38:03 +0000 2009" var outputDateFormat = "hh:mm a dd:MM:yy" parseTwitterDate(str, outputDateFormat)