objective-c - ios 날짜 비교




목표 C-두 날짜 간의 일수 계산 (4)

ObjC 코드 :

NSDateComponents *dateComponent = [calender components:NSCalendarUnitDay fromDate:startDate toDate:endDate options:0];

결과:

int totalDays = (int)dateComponent.day;

가능한 중복 :
어떻게하면 두 날짜를 비교하고 며칠을 반환 할 수 있습니까?

두 개의 날짜가 있습니다 (예 : "yyyy-mm-dd"형식의 NSString). 예를 들면 다음과 같습니다.

NSString *start = "2010-11-01";
NSString *end = "2010-12-01";

구현하고 싶습니다 :

- (int)numberOfDaysBetween:(NSString *)startDate and:(NSString *)endDate {

}

감사!


날짜 및 시간 프로그래밍에 대한 전체 안내서가 있습니다. 여기에 당신이해야 할 일에 대한 힌트를주는 관련 섹션 이 있습니다.

예제 코드는 다른 질문에서 오는 것입니다.

시도하고 그것에 따라 뭔가를 작성하고 특정 질문이 있으면 다시 오세요.

편집하다

괜찮아. 여기에 가장 기본적인 형식으로 코드를 작성하는 방법이 나와 있습니다.

첫째, 나는 NSDate를 확장 할 것이다.

헤더 파일 :

//  NSDate+ADNExtensions.h

#import <Cocoa/Cocoa.h>


@interface NSDate (ADNExtensions)

- (NSInteger)numberOfDaysUntil:(NSDate *)aDate;

@end

구현 파일 :

//  NSDate+ADNExtensions.m

#import "NSDate+ADNExtensions.h"


@implementation NSDate (ADNExtensions)


- (NSInteger)numberOfDaysUntil:(NSDate *)aDate {
    NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit fromDate:self toDate:aDate options:0];

    return [components day];
}


@end

이것은 매우 거친 코드입니다. 두 번째 날짜가 첫 번째 날짜보다 늦은지 확인하거나 유효성을 검사하는 오류가 없습니다.

그리고 나서 다음과 같이 사용합니다 (64 비트 가비지 수집 환경에서 실행).

NSDate *startDate = [NSDate dateWithString:@"2010-11-01 00:00:00 +0000"];
NSDate *endDate = [NSDate dateWithString:@"2010-11-02 00:00:00 +0000"];

NSInteger difference = [startDate numberOfDaysUntil:endDate];

NSLog(@"Diff = %ld", difference);

이것은 수치 스럽습니다. 왜냐하면 코드와 잘못된 출력을 게시하고보다 구체적인 도움을 얻음으로써 더 많은 것을 배웠을 것이기 때문입니다. 그러나 만약 당신이 단지 잘라 붙이기 프로그래머가되고 싶다면; 이 코드와 행운을 가져라.


이 코드는 Swift 2에서 멋지게 작동하는 것 같습니다.

func daysBetweenDate(startDate: NSDate, endDate: NSDate) -> Int
{
    let calendar = NSCalendar.currentCalendar()

    let components = calendar.components([.Day], fromDate: startDate, toDate: endDate, options: [])

    return components.day
}

신속한 4 구현

메서드 호출 :

let numberOfDays = daysBetweenDates(startDate: fileCreatedDate,endDate: date)

메소드 구현 :

 func daysBetweenDates(startDate: Date, endDate: Date) -> Int {
        let daysBetween = Calendar.current.dateComponents([.day], from: startDate, to: endDate)
        print(daysBetween.day!)
        return daysBetween.day!
  }

목표 C 구현 :

메서드 호출 :

int numberOfDaysSinceFileCreation = [self daysBetweenDates: fileCreatedDate
                                                                   currentDate: today];

메소드 구현 :

- (int) daysBetweenDates: (NSDate *)startDate currentDate: (NSDate *)endDate
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *dateComponent = [calendar components:NSCalendarUnitDay fromDate:startDate toDate:endDate options:0];

    int totalDays = (int)dateComponent.day;
    return totalDays;

}






nsdate