2014-02-26 96 views
1

我想格式化一个日期,我从twitter使用STTwitter库。NSDateFormatter不工作的Twitter日期

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

代码从Twitter获取日期:

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

这将返回时间,日期,时间在鸣叫制成,看起来凌乱区和年份。

我用下面的代码转换这一点,并使其整洁的尝试:

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; 

香港专业教育学院尝试了许多不同的变化日期格式化程序,但没有工作,我不知道为什么。

感谢您的帮助:)

+1

你可以登录'dateString'的例子吗?我猜那个dateFromString是空的?你没有把真正的线路无法工作。 – Larme

+0

dateString == Wed Feb 26 14:27:37 +0000 2014. dateFromString的确为空。 –

+1

好的,那不是dateFormat你的put(第一次),这就是为什么你得到一个空值。 – Larme

回答

11

您使用甚至还没有接近的结果,这是像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]; 

真正的窍门是在使用的语言环境中,因为日期是用英语本地化的。

+1

我是个白痴。谢谢 –

4

STTwitter有一个category

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

我创建了一个要点与斯威夫特实现它: https://gist.github.com/appzzman/62339fcd10bbe8fce256这需要Twitter的日期,并允许您指定日期的输出格式。

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)