2012-11-26 52 views
2

我想弄清楚如何解析AD和BC日期與NSDateFormatter和爲什麼0000年解析失敗。NSDateFormatter BC/AD日期問題

NSString *test1 = @"0000-01-01"; 
NSString *test2 = @"0001-01-01"; 
NSString *test3 = @"0002-01-01 AD"; 
NSString *test4 = @"0002-01-01 BC"; 

NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init]; 

[formatter1 setDateFormat: @"yyyy-MM-dd"]; 

NSLog(@"test 1 - %@", [formatter1 dateFromString: test1]); 
NSLog(@"test 2 - %@", [formatter1 dateFromString: test2]); 

NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init]; 

[formatter2 setDateFormat: @"yyyy-MM-dd G"]; 

NSLog(@"test 3 - %@", [formatter2 dateFromString: test3]); 
NSLog(@"test 4 - %@", [formatter2 dateFromString: test4]); 

而這正是它返回:

2012-11-26 11:24:27.536 Test[1968:c07] test 1 - (null) 
2012-11-26 11:24:28.615 Test[1968:c07] test 2 - 0001-12-31 22:21:00 +0000 
2012-11-26 11:24:37.604 Test[1968:c07] test 3 - 0001-12-31 22:21:00 +0000 
2012-11-26 11:24:45.738 Test[1968:c07] test 4 - 0003-12-31 22:21:00 +0000 

正如你可以看到它對於其他變種0000的日期和錯誤的日期返回null。

+5

**沒有第0年** – 2012-11-26 09:30:54

+0

但是BC/AD年呢?他們也回來錯誤的日期! –

+1

,因爲設置爲日期格式化程序的格式與日期字符串的格式不匹配。 – 2012-11-26 10:07:48

回答

0

根據wikipedia,Anno Domini(AD)系統中不存在零年,該系統通常用於公曆年數及其前身Julian日曆的年數。在這個系統中,公元前1年是公元1年。然而,天文年的編號(與公元前一千年的朱利安一致)和ISO 8601:2004(與公曆年相符)公元前1年)以及所有佛教和印度教曆法。

您無法正確記錄日期對象。嘗試使用stringFromDate函數將獲取的日期轉換爲字符串並記錄輸出。