いろは2986023 views
ヒストリア284143 views
小学理科717236 views
高校生物549842 views
高校化学2913383 views
Computer365120 views
中学理科1626207 views
雑学1472593 views
MathPython491378 views
英語607877 views
Help
Tools

English

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 の日付サポートにより、日付表示がとても簡潔に書けます。