iPhone / iOS(Swift)で2つのNSDateを比較する方法を解説
Swiftで2つのNSDateを比較する方法
この記事では、Swiftを使って2つのNSDate(日付)を比較する方法を解説します。日付の比較は、予約アプリやスケジュール管理など、実際のiOSアプリ開発でもよく使われる処理です。
今回はシミュレーターではなく、Playgroundを使って動作を確認していきます。
1. 比較用の日付を2つ作成する
まず、NSDateComponentsを使って2つの異なる日付を作成しましょう。ここでは「1993年6月5日」と「1995年2月4日」という2つの日付を定義します。
let dateOne = NSDateComponents() dateOne.day = 5 dateOne.month = 6 dateOne.year = 1993 let dateTwo = NSDateComponents() dateTwo.day = 4 dateTwo.month = 2 dateTwo.year = 1995
2. 日付コンポーネントからNSDateを生成する
次に、作成した日付コンポーネントをもとに、NSCalendarを使って実際のNSDateオブジェクトを生成します。
let cal = NSCalendar.current let firstDate = cal.date(from: dateOne as DateComponents) let secondDate = cal.date(from: dateTwo as DateComponents)
3. compareメソッドで日付を比較する
日付の比較には、compare(_:)メソッドを使用します。if文と組み合わせることで、どちらの日付が前か後かを判定できます。
if secondDate!.compare(firstDate!) == .orderedAscending {
print("date 1 is bigger than date 2")
} else {
print("Date 2 is bigger")
}このコードをシミュレーター上で実行すると、以下のような結果が出力されます。

比較結果の3つのパターン
compareメソッドの戻り値には、次の3種類があります。
- .orderedAscending … レシーバー(左側)の日付が引数(右側)より前の場合
- .orderedDescending … レシーバー(左側)の日付が引数(右側)より後の場合
- .orderedSame … 両方の日付が同一の場合
これらの戻り値を組み合わせることで、「以前」「以降」「同日」など、さまざまな条件分岐を実装できます。ぜひ自分のアプリ開発にも活用してみてください。
-
iPhoneのiOSをダウングレードする方法【ベータ版・正式版それぞれの戻し方】
iOSのアップデートは非常に魅力的です。iPhoneの機能を向上させる素晴らしい新機能が追加されるだけでなく、ほとんどのマイナーアップデートには、既知のバグや不具合を修正する多数の修正も含まれています。 しかし、iOSのベータ版は話が別です。ベータ版では、重要な機能が動作しなくなったり、アプリが正常に起動できなくなったり、バッテリー関連の問題が発生したりすることがよくあります。まれに、正式リリース版でも同様の問題が起こることがあります。 他のトラブルシューティング手段をすべて試しても解決しない場合(iPhoneのリセットは試しましたか?)、iOSのダウングレードが有効な解決策になる可能
-
iOS 12のインストール方法|GM版・IPSWファイルを使った2つの手順を解説
Appleは、待ち望まれていたiOS 12のリリース日を9月17日と発表しました。しかし、正式リリースまで待ちたくない方には、今すぐiOS 12のゴールドマスター(GM)版をインストールする方法があります。そのためには「Apple Beta Software Program」に参加し、お使いのデバイスを登録する必要があります。 正式版のiOS 12は約1週間後に一般公開される予定で、「スクリーンタイム」「Memoji」「Siriショートカット」、改善された通知機能など、多数の新機能が利用できるようになります。 ポイント:iOS 12は、古い機種から新しい機種まで、あらゆるiPhoneの応答速度