2011-05-24 132 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