2013-02-27 36 views
1

代碼:NSDateFormatter錯誤,歸期一年前

NSString *ds = @"2013-02-25"; 
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate* date = [formatter dateFromString:ds]; 
NSLog(@"%@", date); //2012-02-24 16:00:00 +0000 
[formatter setDateFormat:@"MMM dd, YYYY"]; 
NSLog(@"%@", [formatter stringFromDate:date]); //Feb 25, 2012 

有什麼問題我做了?還是iOS 6 SDK錯誤?

回答

6

更改此:

[formatter setDateFormat:@"YYYY-MM-dd"]; 
[formatter setDateFormat:@"MMM dd, YYYY"]; 

要:

[formatter setDateFormat:@"yyyy-MM-dd"]; 
[formatter setDateFormat:@"MMM dd, yyyy"]; 

原因的錯誤,

這是一個常見的錯誤使用YYYY。 YYYY指定而YYYY指定年(「創周」),在ISO 年周曆所使用的日曆年度 。在大多數情況下,YYYY和YYYY產量相同 數量,但是它們可能會有所不同。通常,您應該使用日曆年的 。

+1

它的工作原理,謝謝。 – fannheyward 2013-02-27 05:09:49

+0

@fannheyward歡迎。 – Rushi 2013-02-27 05:10:18

+1

@Rushi:很好的解釋。一旦阻擋時間結束,他可以在15分鐘內接受。 – 2013-02-27 05:11:24