2016-10-20 1 views
1

문자열 날짜 @ "2016-10-19T12 : 37 : 15.0896144 + 00 : 00"int 초/분 /시/일/달/년으로 변환하는 방법.현재 날짜에서 해당 날짜를 만들 때 날짜 값을 얻는 방법

나는 날짜 값, 즉를 만들 수 있습니다 @ "2016-10-19T12 : 37 : 15.0896144 + 00 : 00"몇 초 몇 분 필요 "50 초"

후 보여줄 필요가

** 후 몇 시간 보여줄 필요가 후 "40 분"

을 보여 @ 몇 일 "삼일"몇 달 후

@ 표시해야합니다 후 20 "시간"

"사개월 @ 표시해야 " 몇 년 후

내가 작동하지 않는 시도 무엇 "이년"**

@ 표시해야합니다.

NSString* format = @"2016-10-19T12:37:15.0896144+00:00"; 
    // Set up an NSDateFormatter for UTC time zone 
NSDateFormatter* formatterUtc = [[NSDateFormatter alloc] init]; 
[formatterUtc setDateFormat:format]; 
[formatterUtc setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    // Cast the input string to NSDate 
NSDate* utcDate = [formatterUtc dateFromString:[formatterUtc stringFromDate:timeString]]; 

    // Set up an NSDateFormatter for the device's local time zone 
NSDateFormatter* formatterLocal = [[NSDateFormatter alloc] init]; 
[formatterLocal setDateFormat:format]; 
[formatterLocal setTimeZone:[NSTimeZone localTimeZone]]; 
    // Create local NSDate with time zone difference 
NSDate* localDate = [formatterUtc dateFromString:[formatterLocal stringFromDate:utcDate]]; 
NSTimeInterval seconds = [[NSDate date] timeIntervalSinceDate:localDate]; 

귀하의 의견은 높이 평가됩니다.

+1

NSDateIntervalFormatter와 NSDateComponentsFormatter를 살펴보십시오. – rmaddy

+0

NSDateComponentsFormatter를 사용했습니다. – kiran

답변

1

NSDateFormatter을 사용하면 문자열을 날짜로 변환 할 수 있습니다. 그런 다음 NSDateComponentsFormattermaximumUnitCount이 1이고 allowedUnits을 사용하여 초, 분,시, 일, 달 및 연도를 포함하십시오. 당신이 locale 설정에 대해 궁금해하는 경우

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"; 
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 

NSDate *date1 = [dateFormatter dateFromString:@"2016-08-19T12:37:15.0896144+00:00"]; 
NSDate *date2 = [NSDate date]; // or, if date2 is also from a string, just use that dateFormatter again 

NSDateComponentsFormatter *componentsFormatter = [[NSDateComponentsFormatter alloc] init]; 
componentsFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull; 
componentsFormatter.allowedUnits = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
componentsFormatter.maximumUnitCount = 1; 

NSString *string = [componentsFormatter stringFromDate:date1 toDate:date2]; 

애플 Technical Q&A 1480를 참조하십시오.

+0

귀하의 의견은 저에게 잘 돌아갑니다. 내 입력 날짜 문자열을 기준으로 다른 수준의 값이 있습니다. – kiran