
Swiftで日付や時間の操作をしたいときに便利なのが .addingTimeInterval() です。
たとえば、「今から5分後の時刻を計算したい」「過去10秒前の時間を知りたい」など、一定時間を加算・減算する処理を簡単に書けるようになります。
この記事では .addingTimeInterval() の基本的な意味や使い方、引数、活用シーンをわかりやすく解説します。
.addingTimeInterval() とは?
.addingTimeInterval() は、Date 型のインスタンスに対して、指定した秒数を加えた新しい日時を返すメソッドです。
つまり、「今の時間 + ○秒後」のような日時計算が、非常にシンプルに行えます。
|
1 2 3 |
let now = Date() let fiveMinutesLater = now.addingTimeInterval(300) // 300秒 = 5分 |
この例では、now の5分後(300秒後)の Date を作成しています。
元の日時(now)は変更されず、計算後の新しい日時(fiveMinutesLater)が生成されるのがポイントです。
具体例:未来の日付を表示する
|
1 2 3 4 5 6 7 8 9 |
import Foundation let now = Date() let threeHoursLater = now.addingTimeInterval(3 * 60 * 60) let formatter = DateFormatter() formatter.dateFormat = "yyyy/MM/dd HH:mm" print("3時間後は \(formatter.string(from: threeHoursLater)) です") |
具体例②:60秒後の予定時刻
たとえば、ユーザーがボタンを押した時の「60秒後の予定時刻」を表示したい場面では、次のように使えます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import SwiftUI struct ContentView: View { @State private var scheduledTime = Date() var body: some View { VStack { Text("予定時刻: \(formatted(date: scheduledTime))") .padding() Button("60秒後に設定") { scheduledTime = Date().addingTimeInterval(60) } } } func formatted(date: Date) -> String { let formatter = DateFormatter() formatter.dateFormat = "HH:mm:ss" return formatter.string(from: date) } } |

このように、ボタンをタップすると現在時刻の60秒後が表示されます。
(上記例では少しプレビュー表示してから数秒経ってからボタンを教えているので60秒以上経っているように見えますが、、、ボタンを押した時刻から60秒追加された時刻が表示されています。)
引数の意味と単位
addingTimeInterval() に渡す引数は Double 型で、秒数を指定します。
| 引数の値 | 意味 |
|---|---|
| 正の数 | 未来の時間を指定(加算) |
| 負の数 | 過去の時間を指定(減算) |
例:
|
1 2 3 |
now.addingTimeInterval(60) // 1分後 now.addingTimeInterval(-3600) // 1時間前 |
ミリ秒や分、時間で指定したいときは、自分で秒に変換してから渡します。
|
1 2 3 |
let tenMinutesInSeconds = 10 * 60 now.addingTimeInterval(Double(tenMinutesInSeconds)) |
活用シーン
addingTimeInterval() は、次のような場面で活躍します。
- 予約機能で「現在時刻から30分後」を表示したいとき
- タイマーやアラームを作るときに終了時刻を設定したいとき
- ログデータなどで「何秒後に次のイベントがあるか」を記録したいとき
- キャッシュやセッションの有効期限を計算したいとき
シンプルなメソッドですが、時間の加減算が必要な多くの機能で活躍します。
注意点
addingTimeInterval() は直感的に使えますが、正しく理解するためにはいくつか注意しておくべきポイントがあります。
- タイムゾーンやローカル時間とは関係なく、純粋な「秒の加算」で計算されます
例えば「+3600秒」とした場合、常に 1時間後の時刻が返ります。タイムゾーンの切り替えやサマータイム(DST)などは影響しません。 - Date は秒単位で保持されているので、小数(たとえば 0.5 秒)なども指定可能です
1秒未満の待機や計算も可能で、細かい時間指定に対応しています。 - addingTimeInterval は現在の Date を変化させず、新しい日時を返します(イミュータブル)
元のDateインスタンスはそのままで、新しいDateが返されます。
まとめ
.addingTimeInterval() は、Date に対して「○秒後」や「○秒前」を簡単に計算できるメソッドです。
- 秒数(
Double型)を指定するだけで、直感的に時間の加減算ができる - タイマー、予約、アラーム、セッション管理など幅広い場面で活用できる
- 元の日時は変更されず、新しい
Dateインスタンスが返ってくる(イミュータブル)
Swift で「日付を少しずらしたい」「一定時間後の予定を計算したい」といったシーンでは、必ず役に立つ便利なメソッドです。
使い方はとてもシンプルなので、まずは「現在時刻から5分後や10分後を計算する」といった基本的な例から試してみると理解が深まるはずです!

