NSDateとDate 比較方法の違い
4617 ワード
はじめに
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;
}
}
参照
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.")
}
}
+ (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;
}
}
Author And Source
この問題について(NSDateとDate 比較方法の違い), 我々は、より多くの情報をここで見つけました https://qiita.com/hiroyuki7/items/2cd7d6c0ffcea641b0f7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .