#18 Swiftで学ぶ日付と時刻の扱いの基本

Swiftの日付操作は、`Date`という型と、それを扱うための専用の仕組みを組み合わせて行います。この記事では、Swiftにおける日付の基本的な扱い方を解説します。

Dateを使う

let now = Date() print(now)

`Date()`は実行時点のタイムスタンプを表しますが、そのまま`print`すると常にUTC(協定世界時)基準の表記になる点に注意しましょう。日本時間で表示したい場合は、次に説明する`DateFormatter`でタイムゾーンを指定します。

日付を文字列にする

let formatter = DateFormatter() formatter.dateFormat = "yyyy年MM月dd日" formatter.timeZone = TimeZone(identifier: "Asia/Tokyo") print(formatter.string(from: now))

`dateFormat`に指定する書式指定子(`yyyy`, `MM`, `dd`など)は、PHPやJavaの書式指定と似た記法です。

文字列から日付に変換する

逆に文字列を`Date`型に変換したい場合も、同じ`DateFormatter`を使います。

let formatter2 = DateFormatter() formatter2.dateFormat = "yyyy-MM-dd" if let date = formatter2.date(from: "2026-08-20") { print(date) }

変換に失敗する可能性があるため、戻り値はオプショナル型になります。`if let`で安全に取り出しましょう。

日付を計算する

let threeDaysLater = Calendar.current.date(byAdding: .day, value: 3, to: now)

`Calendar`という仕組みを使うことで、日をまたぐ計算も正確に行えます。

2つの日付の差を求める

let components = Calendar.current.dateComponents([.day], from: startDate, to: endDate) print(components.day ?? 0)

`dateComponents`に`.day`や`.hour`など欲しい単位を指定することで、2つの日付の差を柔軟に取得できます。

Swiftならではの注意点

Swiftの日付計算は、単純に秒数を足すのではなく、`Calendar`を経由することが推奨されています。これは、夏時間の切り替えなど、単純な秒数計算では対応できない複雑なケースを正しく扱うための仕組みです。また`DateFormatter`はインスタンス生成のコストがやや高いため、頻繁に日付をフォーマットする処理では、使い回すインスタンスをあらかじめ用意しておくとパフォーマンス面でも安心です。

まとめ

Swiftの日付操作は`Date`・`DateFormatter`・`Calendar`の組み合わせが基本です。文字列との相互変換、日付の差の取得には`dateComponents`を使い、計算には`Calendar`を使う習慣をつけましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Swiftをもっと学びたい方には「これからつくる iPhoneアプリ開発入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本