2011-08-11 80 views
2

我有以下代碼:dateFromString返回錯誤的日期

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-mm-dd"; 
    NSDate *cDate = [formatter dateFromString:thisLine]; 
    NSLog(@"cDate '%@' thisLine '%@'", cDate, thisLine); 

的NSLog打印: CDATE '2011-01-10 5時07分零零秒+0000' thisLine '2011-07-10' 而cDate應該是'2011-07-10'

有什麼想法?

感謝

回答

8

NSDate description總是以自己的格式打印日期,一般爲+000時區。您需要使用日期格式才能獲取格式正確的日期並使用MM for month not mm

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"yyyy-MM-dd"; 
NSDate *cDate = [formatter dateFromString:thisLine]; 
NSLog(@"cDate '%@' thisLine '%@'", [formatter stringFromDate:cDate], thisLine); 

- (的NSString *)描述
討論
的表示不能保證保持跨操作系統的不同版本 恆定。要格式化 日期,你應該使用的日期格式對象,而不是(見 NSDateFormatter和數據格式指南)

+0

請解釋-1我解決了格式化問題和日期說明符問題。 – Joe

+0

問題不在於打印格式,而是月份未設置爲7. – SSteve

+0

@SSteve是,但OP沒有指定哪一個和我確實解決了這兩個問題。 OP說他預計'2011-07-10'所以有2部分 – Joe

12

小寫mm是幾分鐘而不是幾個月,每月使用大寫MM

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd"; 
    NSDate *cDate = [formatter dateFromString:thisLine]; 
    NSLog(@"cDate '%@' thisLine '%@'", cDate, thisLine); 
+0

感謝美麗! – saman01

+0

解釋一切!日Thnx! – stellz