2014-09-29 4 views
0

같은 제목의 질문이 많지만 아무도 내 질문에 대답하지 않았습니다. 그레고리력으로 그 날짜를 표시하는 NSDate에 이슬람 력을 나타내는 NSString을 변환 할 수 있기를 원합니다. 이 코드는 있지만 이슬람 달력에 NSDate를 반환합니다.NSDates를 한 달력에서 다른 달력으로 변환

- (NSDate*) convertToNSDateFromString : (NSString *)dateString : (NSString *)dateFormat 
{ 
//Format the Calendar 
NSDateFormatter *f = [[NSDateFormatter alloc] init]; 
NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSGregorianCalendar]; 
[f setCalendar:gregorian]; 
[f setDateStyle:NSDateFormatterLongStyle]; 
[f setDateFormat:dateFormat]; 

NSDate *date = [f dateFromString:dateString]; 

return date; 
} 
+0

NSString을 반환해야합니까? 가능한 경우 시도하십시오. –

+0

당신은 자신을 날짜 개체와 혼동하고 있습니다. 그것들은 단일 시점입니다. 이슬람 날짜를 나타내는 문자열을 전달하기 때문에, 포매터의 달력은 'NSCalendarIdentifierIslamic'이어야합니다. – Desdenova

답변

3

NSDate에는 캘린더가 없습니다. 이것은 실제로 특정 시간을 나타내는 시간 소인입니다. 더 나은 이해를 얻으려면 EPOCH에 대해 조금 읽으십시오.

어쨌든 NSDate 당신에게 1970년 1월 1일 UTC에서 초 수를 반환합니다 timeIntervalSince1970이를 사용하여 기준 시간에서 초 단위로 시간을 줄 수 있으며, 이것은 실제로 모든 NSDate이 무엇인지입니다. 즉,이 객체에서 작업 할 수있는 마법 도구가 전혀 없다는 의미입니다.

이 개체 옆에 필요한 것은 일정이므로 NSCalendar 트릭을해야합니다. 이 달력은 시간을 변환하지 않고 표현을 변환하는 데 도움이됩니다. 따라서 타임 스탬프를 날짜의 다른 표현으로 변환하거나 날짜의 특정 표현에서 타임 스탬프를 얻을 수 있습니다. 왜 대부분의 시간 때문에 지구상의 24 개 위치를 찾을 수 있기 때문에 이것은 왜 그렇게입니까? 시간대로 인해 현재 시간이 각각 다른 시간대가 있습니다 ... 당신이 이것을 모르는 것 같아요. 단지 설명하려고합니다. 왜 날짜 도구가 너무 복잡하고 사용하기가 어렵습니까?

+0

Ok Matic, 답장을 보내 주셔서 감사합니다. 이제 이해가된다. 이게 정확히 내 코드에서 설정 한 그레고리력으로 무엇을하고있는 것이 아닌가? –

+0

당신이 한 일은 주어진 형식의 그레고리력으로 날짜를 나타내는 문자열을 분석합니다. 당신이 가진 것은 시간의 특정 순간을 나타내는 타임 스탬프 (NSDate)입니다. 그래서 문자열이 이슬람에 있다면 이슬람으로 구문 분석해야합니다. 그러면 얻을 수있는 것은 다시 특정 순간을 나타내는 NSDate 스탬프가됩니다. 그런 다음 특정 순간을 나타내는 그레고리오 력에서 문자열을 만들 수 있습니다. –