【Swift】Dateの使い方

Dateはカレンダーやタイムゾーンに依存しない「特定の時点」を示す構造体です。

単体で日時の比較や、時間間隔の計算等が可能ですが、夏時間、閏年、うるう秒、暦法(ユリウス暦やグレゴレオ歴等)等は考慮されませんので、正確に算出する為にはCalendar構造体と組み合わせて使用します。

スポンサーリンク

環境

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

【Xcode】11.4
【Swift】5.2
【iOS】13.4
【macOS】Catalina バージョン 10.15.4
スポンサーリンク

現在日時の取得

引数無しのイニシャライザで現在の日時を取得できます。

print出力した結果はGMT(グリニッジ標準時)表記の為、日本時間から9時間ずれていますが、全く同じ「特定の時点」を示しています。

スポンサーリンク

特定の日時を生成

Calendar構造体とDateComponents構造体を組み合わせて特定の日時を生成します。

使用するカレンダーが変わると、設定した日時の意味合いが変わるので注意が必要です。
例えば、西暦(.gregorian)の代わりに、和暦(.japanese)を使用すると、令和2020年と解釈され、出力結果は、

となります。

スポンサーリンク

日時を秒単位で進める/戻す

引数に秒数を指定して、n秒後の日時を生成します。
マイナス値を指定すると、n秒前の日時が生成されます。
あくまで絶対値を調整するだけですので、時間、日、月などの暦の概念を考慮する場合は、Calendarを使用する必要があります。

こちらは自らが保持する日時情報にインターバルを追加するメソッドです。
自身を更新する為、変数(var)として宣言されていなければいけません。

使用例

簡略系

演算子(+,-)および代入演算子(+=,-=)を使用した、加減算も可能です。
こちらの方がコードがすっきりしますね。

スポンサーリンク

時間差を取得する

引数で指定した他の日時との時間差を秒数で取得します。
戻り値のTimeIntervalはDouble型です。
比較対象が過去の場合はマイナス値が戻ります。

使用例

スポンサーリンク

日時の比較

Dateの比較には比較演算子が使えます。

出力結果

スポンサーリンク

あわせて読みたい記事

【Swift】日付と時間を扱うクラス/構造体まとめ
Swiftでは日付と時間を扱う為にクラスや構造体がいくつか用意されており、組み合わせて使用します。本記事ではそれらのクラス/構造体を紹介します。
【Swift】Calendarの使い方
Calenderは主に日付と時間の計算を行う際に使用する構造体です。
【Swift】TimeZoneの使い方
TimeZoneはタイムゾーン(標準時間帯)情報を保持する構造体です。タイムゾーンはある地域での標準時間を表す指標で、GMT(グリニッジ標準時)との時差で表します。日本の標準時間である日本標準時(JST)はGMT+9時間で定義されていま...
【Swift】Localeの使い方
Localeは、言語と地域を組み合わせたロケール情報を保持する構造体です。日付や時間、金額、数値等の書式の決定に影響します。
【Swift】DateFormatterの使い方
日付と時間の書式を定義するクラスです。Date構造体←→テキストの相互変換に使います。