😽
SwiftでのDate系のフォーマッターまとめ
フォーマッター 一覧
Formatter | 扱う値 | 例 |
---|---|---|
DateFormatter | Dateを見やすいようにフォーマット | 2022年7月21日 木曜日 13:58 |
DateComponentsFormatter | 時間の量(所要時間) | 3年4か月16日 |
RelativeDateTimeFormatter | 今からの相対時間を表示 | 4 日前, 明日, 一昨日, 3 年後 |
DateIntervalFormatter | 期間の表示 | 2019/03/06 0:55~2022/07/22 0:55 |
ISO8601DateFormatter | ISO 8601に準したフォーマット | 2022-07-21T15:55:40Z |
DateComponentsFormatterの使い所
時間の量(所要時間)
に向いているフォーマッター
- 乗り換え時間(2分)
- 作業予定時間(3時間15分)
- ゲームクリア時間(5時間46分)
RelativeDateTimeFormatterの使い所
今からの相対時間を表示
に向いているフォーマッター
- Twitterの投稿時間(3分前)
- ゲーム開始時間(2時間前)
- タスクの開始時間(1日後)
それぞれの使い方
let now = Date.now
let future = Calendar.current.date(byAdding: .hour, value: 12, to: now)!
let past = Calendar.current.date(byAdding: .hour, value: -12, to: now)!
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .short
print(dateFormatter.string(from: past)) // 2022/07/21 13:54:18
let dateComponentsFormatter = DateComponentsFormatter()
dateComponentsFormatter.allowedUnits = [.year, .month, .day, .hour, .minute]
dateComponentsFormatter.unitsStyle = .brief
dateComponentsFormatter.maximumUnitCount = 3
print(dateComponentsFormatter.string(from: .init(second: 33122))!) // 9時間12分
print(dateComponentsFormatter.string(from: past, to: now)!) // 12時間
let relativeDateTimeFormatter = RelativeDateTimeFormatter()
print(relativeDateTimeFormatter.string(for: past)!) // 12時間前
print(relativeDateTimeFormatter.string(for: future)!) // 11時間後
let dateIntervalFormatter = DateIntervalFormatter()
print(dateIntervalFormatter.string(from: past, to: now)) // 2022/07/21 13:54~2022/07/22 1:54
let iso8601DateFormatter = ISO8601DateFormatter()
print(iso8601DateFormatter.string(from: now)) // 2022-07-21T16:54:18Z
Discussion