2010-01-09 3 views
5

기본적으로 API에서 날짜 문자열을 가져 오는 중입니다.이 활동이 '5 시간 전'또는 '3 일 전'이라는 앱에 표시하려고합니다.NSDate 객체에서 문자열 이후 시간을 얻는 방법은 무엇입니까?

현재 [NSDate timeIntervalSinceNow] 메서드에서 NSTimeInterval을 가져 오려고합니다. 그리고 나서 [NSDate dateWithTimeIntervalSince1970:interval]을 사용하여 다시 NSDate로 시간 간격을 변환하십시오. 그리고 출력 NSDateFormatter 객체에 대해 올바른 형식을 설정하기 위해 간격을 확인하여 60/3600/86400/등보다 적은지 확인하십시오.

올바른 방법인가요? 아니면 이것을하기위한 더 쉬운 방법이 있습니까?

답변

7

NSCalendar을 사용하는 것이 훨씬 좋습니다. 이런 종류의 변환을 위해 설계되었습니다.

NSUInteger desiredComponents = NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
NSDateComponents *elapsedTimeUnits = [[NSCalendar currentCalendar] components:desiredComponents 
                    fromDate:activityDate 
                    toDate:[NSDate date] 
                    options:0]; 
+0

감사합니다. 훨씬 좋습니다! – akv

+0

이런 식으로 문제를 일으키는 것은 4 일 전에 "3 일, 14 시간, 6 분"등으로 표시됩니다. 다른 질문에서이 대답을 사용하는 것이 좋습니다. http : // stackoverflow.com/a/932130/591487 – inorganik