iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

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")
}

このコードをシミュレーター上で実行すると、以下のような結果が出力されます。

iPhone / iOS(Swift)で2つのNSDateを比較する方法を解説

比較結果の3つのパターン

compareメソッドの戻り値には、次の3種類があります。

  • .orderedAscending … レシーバー(左側)の日付が引数(右側)より前の場合
  • .orderedDescending … レシーバー(左側)の日付が引数(右側)より後の場合
  • .orderedSame … 両方の日付が同一の場合

これらの戻り値を組み合わせることで、「以前」「以降」「同日」など、さまざまな条件分岐を実装できます。ぜひ自分のアプリ開発にも活用してみてください。

  1. iPhoneのiOSをダウングレードする方法【ベータ版・正式版それぞれの戻し方】

    iOSのアップデートは非常に魅力的です。iPhoneの機能を向上させる素晴らしい新機能が追加されるだけでなく、ほとんどのマイナーアップデートには、既知のバグや不具合を修正する多数の修正も含まれています。 しかし、iOSのベータ版は話が別です。ベータ版では、重要な機能が動作しなくなったり、アプリが正常に起動できなくなったり、バッテリー関連の問題が発生したりすることがよくあります。まれに、正式リリース版でも同様の問題が起こることがあります。 他のトラブルシューティング手段をすべて試しても解決しない場合(iPhoneのリセットは試しましたか?)、iOSのダウングレードが有効な解決策になる可能

  2. 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の応答速度