【SwiftUI】Date型やCalendarクラスを利用する日付の計算、比較の方法

この記事では、SwiftUIでのDate型やCalendarクラスを利用する日付の計算、比較の方法を紹介しています。

 

スポンサード

日付、時刻の比較

 

例としてDate() で取得できる日付(実行時に今日の現時刻)と、Date() で取得できる日付の3日前の日付の比較を行います。

 

スポンサード

Date型の日付データの比較

スポンサード

今日より3日前の日付データの作成

 

以下のコードで、今日と3日前のDate 型の値を作ります。

これで比較する事ができます。

 

DateComponents型の日付データの比較

DateComponents型のデータで比較する事で、年、月、日など(時刻を比較しない)の条件で比較する処理が行いやすくなります。

まずは、先程作成したDate型のデータを素にDateComponents型の日付データを作成します。

 

この状態で2つのデータを比較すると、違う値となります。

 

そこで、DateComponents型のデータを作る際に、年月のみの値として比較してみます。

このようにする事で、それぞれの日付データの年と月の値で比較するので、同じ値として比較されるようになります。

 

比較の条件に時間を含めずに、年月日を利用する時などで利用できます。

 

スポンサード

年月日、時刻の値を指定して比較する。

これまでは、Date型の値からDateComponents型の値を作成していました。

ここでは、DateComponents型で日付、時刻を指定して値を作る方法を紹介します。

 

例として2021年3月1日0時0分の値を作ります。

 

この場合、Calendarクラスのグレゴリオ暦を指定したインスタンスを作り、年月日、時刻を指定しています。

素の時間はグレゴリオ暦となるため、日本で実行する際は7時とする事で、0時00分を表示する事ができます。

 

しかし、この方法の場合は作成した値はDate型となります。

さきほど、作成したDateComponents型の値と比較するには、型を同じにする必要があります。

 

今回は、Date型に共通させ、値を比較します。

 

String型の日付データの比較

DateComponents型のデータでの比較同夜に、String型を利用する事で、年、月、日など(時刻を比較しない)の条件で比較する処理が行いやすくなります。

 

Date型の値をDateFormatter クラスを利用してString型に変更し比較します。

以下のコードにする事で、年月日の値で2のデータを比較しています。

 

日付、時刻の計算

 

次に日付、時刻の計算の方法を解説します。

ここでは、さきほど作成したDate型の3月1日と3月8日の差分となる7日(7)を取得してみたいと思います。

 

を利用してコードを作成します。


以上、SwiftUIでのDate型やCalendarクラスを利用する日付の計算、比較の方法を紹介しました。