NSDateFormatter返回null

问题描述

| 我正在尝试将NSDate格式化为日期格式为yyyyMMdd的字符串,这是代码
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)
有人知道哪一部分不对吗? 提前感谢。     

解决方法

也许
currentArticle.createdTime
是有效日期,而
data.createdTime
nil
?此外,您正在对
dateFormat
执行
-setDateFormat:
选择器,但看来您的日期格式器是
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];
如果
date
nil
,那么两个
NSLog()
通话都会告诉您。 编辑 仔细检查
data.createdTime
NSDate
实例。也许它是另一个类的实例,例如
NSString
,其
-description
返回显示的日期。这可以解释为什么
NSLog()
“显示”日期,但格式化程序返回nil。
BOOL isDate = [data.createdTime isKindOfClass: [NSDate class]];
NSLog(@\"Date %@ a date.\",isDate ? @\"is\" : @\"is not\");
    ,
[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]);
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...