2012-04-06 21 views
0

此代码有什么问题?日期不显示在UILabel中

NSString *strTest = @"Sun Apr 12 23:29:24 +0000 2009"; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MM/dd/yy"]; 
    NSDate *createdAtFormatted = [dateFormatter dateFromString:strTest]; 
    self.createdAt.text = [dateFormatter stringFromDate:createdAtFormatted]; 

self.createdAt是一个UILabel,它保持空白。为什么?

当尝试使用dateWithNaturalLanguageString,我得到:

enter image description here

+0

因为格式化程序无法将字符串转换为日期。 'createdAtFormatted'是'nil'。您必须将格式字符串与日期字符串进行匹配。 – Costique 2012-04-06 19:17:13

回答

1

您的日期格式日期格式不日期格式从strTest字符串相匹配。

NSString *strTest = @"Sun Apr 12 23:29:24 +0000 2009"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *loc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; // so the formatter recognizes english names for months and days 
[dateFormatter setLocale:loc]; 
[loc release]; // remove if using ARC 
[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZZ yyyy"]; 
NSDate *createdAtFormatted = [dateFormatter dateFromString:strTest]; 
NSLog(@"got %@", createdAtFormatted); 

可以找到格式化符说明符here

+0

你能帮我一下字符串格式吗?我不知道如何为我的字符串正确创建它。 – 2012-04-06 19:24:15

+0

当然 - 我会去'NSDate * createdAtFormatted = [NSDate dateWithNaturalLanguageString:strTest];'。我尝试设置格式化器标志,但月份部分保持失败(4月)。这个解决方案很快且可行,但不鼓励使用该函数,因为如果它不能读取格式,它可能会产生意想不到的结果。 – Alexander 2012-04-06 19:53:24

+0

它说dateWithNaturalLanguageString不是已知的类方法。我正在使用Xcode 4.2和Snow Leopard。 – 2012-04-06 20:02:28

1

你正在给MM/DD/YY模式dateFormatter,但你的日期字符串不适合,因此dateFormatter返回一个无日期。