NSDateFormatter不适用于Twitter日期

时间:2014-02-26 15:01:47

标签: ios string nsdate nsdateformatter sttwitter

我正在尝试使用STTwitter库格式化我从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;

我尝试过日期格式化程序的许多不同变体,但没有一个有效,我不明白为什么。

感谢您的帮助:)

3 个答案:

答案 0 :(得分: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];

答案 2 :(得分:2)

我用Swift实现它创建了一个要点: 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)