【Swift4】Date 日付と日時を比較する方法(NSDate)【Objective-C】

2020年8月27日

Date型の日付や日時を比較する方法です。

日付の比較にはcompare()関数を使用します。

この方法を使用するとStrings型(文字列)の日付や日時を比較することも可能です。

Swift

swiftでは日時はDate型になります。

// 今の日時を取得(2018-05-14 20:00:00 とする)
let date1 = Date()
   
//日付の文字列をDate型にする     
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date2 = dateFormatter.date(from: "2018-05-30 23:59:59")


// NSDate(日時)の比較
if ( date1.compare(date2!) == .orderedAscending ) {
    print("date1が前")
}
else if ( date1.compare(date2!) == .orderedSame ) {
    print("date1とdate2は同じ")
}
else if ( date1.compare(date2!) == .orderedDescending ) {
    print("date1が後")
}

Objective-C

Objective-Cでは日時はNSDate型になります。

// 今の日時を取得(2018-05-14 20:00:00 とする)
NSDate *date1 = [NSDate date];

// 日付の文字列をNSDate型にする
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date2 = [dateFormatter dateFromString:@"2018-05-30 23:59:59"];


// NSDate(日時)の比較
if ([date1 compare:date2] == NSOrderedAscending) {
    NSLog(@"date1が前");
}
else if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1とdate2は同じ");
}
else if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1が後");
}