2012-11-26 3 views
2

NSDateFormatter를 사용하여 AD 및 BC 날짜를 구문 분석하는 방법과 구문 분석에 실패한 이유는 무엇입니까?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 번째 해는 없습니다. ** –

+0

BC/AD 년은 어떨까요? 그들은 또한 잘못된 날짜를 반환합니다! –

+1

날짜 포맷터로 설정된 포맷이 날짜 문자열의 포맷과 일치하지 않기 때문에. –

답변

0

wikipedia에 따르면, 년 제로는 그레고리오 력과 그 전신 인 율리우스 력에서 수년간 사용되는 Anno Domini (AD) 시스템에 존재하지 않습니다. 이 시스템에서 BC 1 년 후에 AD 1이 뒤 따른다. 그러나 천문학적 인 연도 번호 (BC 1 년과 줄리안이 일치하는 곳)와 ISO 8601 : 2004 (그레고리력이있는 연도 1 BC)뿐만 아니라 모든 불교도와 힌두교의 달력에도 적용됩니다.

날짜 개체를 올바르게 기록 할 수 없습니다. stringFromDate 함수를 사용하여 얻은 날짜를 문자열로 변환하고 출력을 기록하십시오.