【Swift】DateComponentsの使い方

DateComponentsは日時の構成要素(年、月、時刻、曜日など)を保持/表現する構造体です。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】13.4
【Swift】5.6.1
【iOS】15.5
【macOS】Monterey バージョン 12.3
スポンサーリンク

プロパティ一覧

DateComponentsを構成する、プロパティ一覧です。
すべてnil値を許すオプショナル型です。
各々の値は使用するCalendarによって、解釈が変わります。
すべての値は、set/get可能です。

calendar
他のプロパティを解釈する為のカレンダー(Calendar)を示します。

timeZone
TimeZoneを示します。

era
時代を示す値(Int)
カレンダーが西暦(gregorian)の場合は、紀元前(0)または紀元後(1)のどちらか、和暦(japanese)の場合は元号を示す値(大化=0、昭和=234、令和=236、等)を示します。

year

yearForWeekOfYear
年単位週番号の基準年

quarter
四半期を示す値。
(※Apple公式マニュアルでは、「この値を解釈する仕組みはほとんど実装されていない」と記されているので、単なる入れ物と思っていたほうがよさそう)

month

isLeapMonth
うるう月か否かのフラグ(Bool)。うるう月の場合はtrueをセットします。

weekOfMonth
今月に入って何週目か、またはその月の週の数を表す値。
週番号についてで解説するように、適用カレンダーによって解釈が変わります。

weekOfYear
今年に入って何週目か、またはその年の週の数を表す値
週番号についてで解説するように、適用カレンダーによって解釈が変わります。

weekday
曜日を示す識別子
1〜N、gregorianではN=7、1=日曜日
または平日の数を表す

weekdayOrdinal
今月に入って何回目の該当曜日かを表す値(「第n火曜日」のnの部分)

day
日にちまたは日数を表す

hour
時刻としての時間、または長さとしての時間を表す

minute
時刻としての分、または長さとしての分を表す

second
時刻としての秒、または長さとしての秒を表す

nanosecond
時刻としてのナノ秒、または長さとしてのナノ秒を表す
(1秒=1,000,000,000ナノ秒)

スポンサーリンク

使用方法

次のイニシャライザで初期化して使用します。

日時コンポーネントの値を初期化し、各プロパティの値を引数で指定します。
各引数は省略可能で、省略した場合はnilが設定されます。

isLeapMonth以外のプロパティはこのイニシャライザで初期化可能です。

使用例1(日時情報の生成)

DateComponentsで日時情報を生成し、Date型に変換する例です。
Date型の変換にはCalendar構造体のdateメソッドを使用します。

出力結果です。
TimeZoneが日本時間の環境で実行した為、生成した日時情報は(GMT+9)で解釈され、GMT+0表示では1:30になります。

使用例2(Date型から要素を取得する)

Date型から各要素を取得しDateComponents型に変換する例です。
Calendar構造体のdateComponentsメソッドを使用します。

【引数】
in
Date型から取得した要素を解釈する為のTimeZoneを指定します。

from
変換元のDate型を指定します。

要素指定
Date型から取得する要素をCalendar.Componentの配列で指定します。
例えば、年月日のみを取得する場合は"[.year, .month, .day]"とします。

出力結果

DateComponentsは上記以外にも日時操作に関する様々な場面で使用されます。

スポンサーリンク

合わせて読みたい記事

【Swift】Dateの使い方
(2022/05/19 更新) Dateはカレンダーやタイムゾーンに依存しない「特定の時点」を示す構造体です。 単体で日時の比較や、時間間隔の計算等が可能ですが、夏時間、閏年、うるう秒、暦法(ユリウス暦やグレゴレオ歴等)等は考慮されませんの...
【Swift】Calendarの使い方
Calenderは主に日付と時間の計算を行う際に使用する構造体です。
【Swift】TimeZoneの使い方
TimeZoneはタイムゾーン(標準時間帯)情報を保持する構造体です。 タイムゾーンはある地域での標準時間を表す指標で、GMT(グリニッジ標準時)との時差で表します。 日本の標準時間である日本標準時(JST)はGMT+9時間で定義されていま...
swift
スポンサーリンク