2011-05-24 87 views
1

我想一个NSDate的格式进行年月日的日期格式的字符串,这里的代码NSDateFormatter返回null

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyyMMdd"]; 

NSDate *date =data.createdTime; 

NSLog(@"%@",date); 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 

中的NSLog返回我这个值

Tue, 24 May 2011 0:05:01 +0800 
(null) 

有谁知道哪一部分是错的?

Thanx提前。

回答

4

也许currentArticle.createdTime是有效日期,但data.createdTimenil?此外,您正在执行选择器dateFormat,但它看起来像您的日期格式化程序是dateFormatter

试试下面的代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat: @"yyyyMMdd"]; 

NSDate *date = data.createdTime; 

NSLog(@" Normal Date = %@", date); 
NSLog(@"Formatted Date = %@", [dateFormatter stringFromDate: date]); 

[dateFormatter release]; 

如果datenil,那么这两个NSLog()电话会告诉你。


编辑

仔细检查data.createdTimeNSDate实例。也许它是另一个类的实例,例如NSString,它的-description返回显示的日期。这可以解释为什么NSLog()“显示”日期,但格式化程序返回nil。

BOOL isDate = [data.createdTime isKindOfClass: [NSDate class]]; 
NSLog(@"Date %@ a date.", isDate ? @"is" : @"is not"); 
+0

嗨, 结果仍然是我说的相同,日期有完整的价值,并格式化仍然为空。 – 2011-05-24 01:23:13

+0

您是否使用我发布的代码? – 2011-05-24 01:31:00

+0

你的意思是你在这篇文章中发表的权利?如果是,那么是的,我跟着你的代码ñ它仍然返回格式化日期为空。 – 2011-05-24 01:37:21

0
[dateFormat setDateFormat:@"yyyyMMdd"]; 

应该是:

[dateFormatter setDateFormat:@"yyyyMMdd"]; 

如果仍无法工作,然后东西是错误的,因为data.createdTime;我跑这个代码,并收到预期输出:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd"]; 

NSDate *date = [NSDate date]; 

NSLog(@"%@",date); 
NSLog(@"%@",[dateFormatter stringFromDate:date]); 
+0

我认为从data.createdTime中提取的值有问题,因为如果我将日期的值设置为NSDate日期,它将工作得很好。但是,当我NSLog data.createdTime,它显示我的日期的正确值,但只有当我格式化它,它将成为空。 – 2011-05-24 02:02:27