SwiftUI Text で日付を表示する
SwiftUI の Text は Date を直接受け取り、様々なフォーマットで表示できます。フォーマッターを別途用意する必要がないので、コードがシンプルになります。
基本的な日付表示
Text(Date(), style:) で日付スタイルを指定します。
let now = Date()
VStack(alignment: .leading, spacing: 12) {
Text(now, style: .date) // 2024年1月15日
Text(now, style: .time) // 14:30
Text(now, style: .datetime) // 2024年1月15日 14:30(iOS 14以降は非推奨)
}相対時間
.relative と .offset で現在時刻からの相対表示ができます。
let pastDate = Date().addingTimeInterval(-3600) // 1時間前
Text(pastDate, style: .relative) // "1時間前"
Text(pastDate, style: .offset) // "-1時間"これらは自動的に更新され、時間の経過とともに表示が変わります。
タイマー表示
.timer スタイルでカウントアップするタイマーを表示できます。
// 現在からカウントアップ
Text(Date(), style: .timer) // 0:00, 0:01, 0:02...特定の時刻までのカウントダウンも可能です。
// 1時間後までカウントダウン
let futureDate = Date().addingTimeInterval(3600)
Text(futureDate, style: .timer) // 59:59, 59:58...日付範囲の表示
2つの日付の範囲を表示することもできます。
let start = Date()
let end = Calendar.current.date(byAdding: .hour, value: 2, to: start)!
Text(start...end) // "14:30〜16:30"format 引数を使う
より細かいフォーマット指定には format: 引数を使います。
let date = Date()
Text(date, format: .dateTime.year().month().day())
// "2024年1月15日"
Text(date, format: .dateTime.hour().minute())
// "14:30"
Text(date, format: .dateTime.weekday(.wide))
// "月曜日"Text の日付サポートにより、日付表示がとても簡潔に書けます。












