programing

두 NSDate 객체의 차이점 — 결과도 NSDate

copyandpastes 2021. 1. 16. 10:59
반응형

두 NSDate 객체의 차이점 — 결과도 NSDate


두 개의 NSDate 개체가 있고 두 개체의 차이를 원하고 결과는 다시 NSDate 개체 여야합니다. 이것을 달성하는 방법을 아십니까?

여기서는 경과 시간을 확인한 다음 경과 시간을 현지화해야하는 고유 한 문제를 해결하려고합니다. NSDate 개체에 경과 시간이 있으면 현지화 할 수 있습니다. 그래서 NSDateFormatter를 사용하여 지역화 할 수 있도록 두 날짜 사이의 시간 간격과 동일한 시간 구성 요소를 가진 NSDate 개체를 만드는 것을 생각했습니다.


NSDate시간의 인스턴스를 나타내므로 시간 간격NSDate. 당신이 원하는 것은 NSDateComponents:

NSDate *dateA;
NSDate *dateB;

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay
                                           fromDate:dateA
                                             toDate:dateB
                                            options:0];

NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);

2002 년 5 월 5 일에서 2001 년 12 월 12 일을 빼면 날짜는 언제입니까? 두 날짜 사이의 시간적 거리는 날짜가 될 수 없으며 항상 일종의 간격입니다. timeIntervalSinceDate : 를 사용하여 간격을 계산할 수 있습니다 .

현지화하려면 다음 단계를 시도하십시오.


에서 NSDate클래스 참조 이러한 작업을 수행하는 인스턴스 메소드를 가지고 -

  1. 두 개의 NSDate 변수를 비교하는 방법은 무엇입니까? 정답 : isEqualToDate:
  2. 두 NSDate 변수의 차이점을 찾는 방법은 무엇입니까? 정답 : timeIntervalSinceDate:
  3. NSDate 변수에서 분, 시간 및 일의 각 개별 값을 얻는 방법은 무엇입니까? 연결

NSDate's를 사용하여 두 날짜 사이의 시간 간격을 계산할 수 timeIntervalSinceDate:있지만 시간 간격을 날짜로 표시하는 것은 의미가 없습니다.


NSDate에서 -compare :를 사용하는 쉬운 방법이 있습니다.

NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100];
NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200];
NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150];
NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil];
NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)];
if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]])
    NSLog(@"myDatea between dateA and dateB");

참조 URL : https://stackoverflow.com/questions/5562594/difference-between-two-nsdate-objects-result-also-a-nsdate

반응형