【Swift】DateComponentsとは?使用方法とDate型との違い

この記事からわかること
- SwiftのDateComponentsとは?
- Date型との違い
- インスタンスの作成方法
- Date型への変換方法
\ アプリをリリースしました /
Swiftで日付関連の情報を扱うDateComponents構造体についてまとめていきます。
DateComponents構造体とは?
DateComponents
はカレンダーとタイムゾーンで評価される単位 (年、月、日、時、分など)を情報に保つ構造体です。日付や時刻といった情報を保持する点では同じですが、Date型とは異なり時代(元号)やうるう年かどうかなどもプロパティとして保持しています。
isLeapMonth
以外の全てのプロパティがオプショナル型として定義されており、必要な情報だけを定義して使用することも可能です。
保持しているプロパティ
インスタンスの作成方法と使い方
DateComponents
はイニシャライザを使用して任意の日時情報を保持したインスタンスを生成することができます。インスタンス化時には全てのプロパティに値を渡す必要はないので定義したい情報だけを適切なプロパティに渡します。
また作成したインスタンスのプロパティに後から値をセットすることも可能です。値を設定していないプロパティは空なので設定したプロパティのみを保持したDateComponents
になります。(isLeapMonth
はあります)
この方法を使うと直感的に日時を指定するだけで簡単に定義することができます。
Calendar構造体から作成する
Calendar
構造体のdateComponents
メソッドを使用することでインスタンスを作成することもできます。この場合はDate
型のそのまま変換することができます。
Calendar
構造体で生成すると全てのプロパティに値が格納されたインスタンスを取得できます。
必要な情報のみを抽出する
Calendar
構造体を使ってインスタンスを作成する際に必要なプロパティだけを保持させる場合は以下のように配列形式でプロパティを指定します。
これで不要な情報を除去してスッキリしたDateComponents
が取得できます。
Date型への型変換
DateComponents
は簡単に日付情報を構築できますがDate
型とは異なるので使用頻度は少ないです。なので汎用性の高いDate
型への型変換方法を記述しておきます。
おすすめ記事:【Swift】Date構造体の使い方!日付の計算や比較方法
DateComponents
構造体が保持するdate
プロパティからDate型の日時情報へ参照できます。
date
プロパティはcalendar
プロパティに値が格納されていないとnil
になるので注意してください。
calendar
プロパティを保持していない場合はCalendar
構造体のdate
メソッドを使用して型変換できます。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。