#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿