はじめに
Objective-CからSwiftへの変換で、日付の比較方法が新しくなっていたのでその覚書です。
Objective-Cでは時刻を比較するのに、NSDateのcompare:を使用し、実行結果であるNSComparisonResultを調べます。
ただこの方法は、昇順(Ascending)、降順(Descending)という名前で新旧を判断しなくてはならないため、結果を直感的に判断できませんでした(私には💦)。
しかしSwiftでは、Dateクラスを不等号で比較することが可能になったため、直感的に比較できます。
比較方法
Swift (Date)
func compare(dateA: Date, dateB: Date) {
// 数が大きいほうが新しい時刻
if dateA > dateB {
print("DateA is newer!")
} else if dateA == dateB {
print("Same")
} else if dateA < dateB {
print("DateA is older.")
}
}
Objective-C (NSDate)
+ (void)compare:(NSDate *)dateA dateB:(NSDate *)dateB {
NSComparisonResult result = [dateA compare:dateB];
switch (result) {
case NSOrderedAscending:
// 昇順(dateA < dateB) dateAのほうが古い
NSLog(@"dateA is older");
break;
case NSOrderedSame:
// 同じ
NSLog(@"Same");
break;
case NSOrderedDescending:
// 降順(dateA > dateB) dateAのほうが新しい
NSLog(@"dateA is newer!");
break;
default:
break;
}
}