NSDateFormatter 将日期从 twitter-timeline 设置为 (null)

Posted

技术标签:

【中文标题】NSDateFormatter 将日期从 twitter-timeline 设置为 (null)【英文标题】:NSDateFormatter set date from twitter-timeline to (null) 【发布时间】:2014-08-12 09:31:44 【问题描述】:

我想在 tableView 中将发布日期添加到我的 Twitter 时间线。我使用“created_at”中的日期,并希望通过 NSDateFormatter 对其进行转换。问题是,在可见的日志中,我有正确的推特日期(基准)、正确的实际系统日期(实际日期),并且在格式化程序之后,实际日期的格式是正确的(在格式化程序之后进行控制),但是推特的日期时间线在格式化程序之后(空)。为什么?为了解决这个问题,我可以或更好地改变什么?

NSDate *Datum = d[@"created_at"];
NSString *Tweet = t[@"text"];
UIImage *Bild = [UIImage imageNamed:@"tweet-timeline.png"];

NSLog(@"Content of Datum: %@", Datum);

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];

[dateformatter setLocale:[NSLocale currentLocale]];
[dateformatter setDateFormat:@"dd.mm.yyyy"];
[dateformatter setDateStyle:NSDateFormatterLongStyle];
[dateformatter setTimeStyle:NSDateFormatterNoStyle];


NSString *test = [dateformatter stringFromDate:Datum];
NSString *control = [dateformatter stringFromDate:[NSDate date]];

NSLog(@"Content of Datum after Formatter: %@", test);
NSLog(@"Content of actual date: %@", [NSDate date]);
NSLog(@"Content of control after Formatter: %@", control);

还有日志:

【问题讨论】:

您可能无法信任NSLog(@"Content of Datum: %@", Datum);,因为它会输出 GMT 时区的日期。使用 dateformatter 记录它并查看它的内容。 【参考方案1】:

好的,找到错误了。

再次阅读 STTwitter 的帮助后,我不得不按照那里的说明“预先格式化”日期:

NSDateFormatter *df = [NSDateFormatter st_TwitterDateFormatter];
NSString *dateString = [d valueForKey:@"created_at"]; // "Sun Jun 28 20:33:01 +0000 2009"
NSDate *rohdatum = [df dateFromString:dateString];

有了这个“rohdatum”(原始日期),我的日期格式化程序就完美了。

【讨论】:

以上是关于NSDateFormatter 将日期从 twitter-timeline 设置为 (null)的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳

使用 NSDateFormatter 管理日期

NSDateFormatter 以一天为单位返回一个日期

NSDateFormatter dateFromString 格式字符串问题

NSDateFormatter dateFromString 返回 nil 用于解析 EXIF 数据

NSDateFormatter:仅当应用程序针对该语言进行本地化时才显示本地化日期