利用 SwiftUI 的 Text 顯示時間

SwiftUI 的 Text 專門顯示文字,因此我們通常會傳入字串,比方以下學貓叫的例子,

Text("我們一起學貓叫,一起喵喵喵喵喵")

不過 Text 的能力不僅於此,從 iOS 14 開始,它連顯示時間也不是問題,接下來就讓我們看它表演吧。

顯示 Date 型別的資料

時間的型別是 Date,Text 可以直接傳入Date 型別的資料,然後搭配參數 style 控制顯示的時間格式。(style 的型別為 Text.DateStyle)

  • 顯示日期

傳入 .date。

Text(Date(), style: .date)
  • 顯示時間

傳入 .time。

Text(Date(), style: .time)
  • 顯示現在時間跟某某時間的間距

傳入 .relative,顯示現在時間跟某某時間的間距。比方以下時間 date 代表距離現在時間 4000 秒以前,所以得到的字串是 1 hr, 6 min,表示跟現在時間距離 1 小時 6 分鐘。

var body: some View {
let date = Date().addingTimeInterval(-4000)
return Text(date, style: .relative)
}

我們也可以傳入 .offset,顯示包含正負數的間距,比方以下時間 date 代表距離現在時間 4000 秒以前,所以顯示的字串是 +1 hour,表示現在時間距離 date +1 小時。

var body: some View {
let date = Date().addingTimeInterval(-4000)
return Text(date, style: .offset)
}

當 date 代表距離現在時間 4000 秒以後時,顯示的字串是 -1 hour,表示現在時間距離 date -1 小時。

var body: some View {
let date = Date().addingTimeInterval(4000)
return Text(date, style: .offset)
}
  • 顯示某時間跟現在時間的差距,以 timer 格式顯示

比方 date 代表距離現在時間 4000 秒以後,一開始顯示的字串是 1:06:39。然後它會自動開始倒數,數字愈來愈小。值得注意的,當數字變成 0 之後,數字反而會愈來愈大,因此此時 date 跟現在時間的差距將愈來愈大。

var body: some View {
let date = Date().addingTimeInterval(4000)
return Text(date, style: .timer)
}

將 Date 型別的資料以自訂格式顯示

搭配 DateFormatter。

var body: some View {
let formatter = DateFormatter()
formatter.dateFormat = "MM-dd-yyyy HH:mm:ss"
return Text(Date(), formatter: formatter)
}

DateFormatter 的格式說明可參考以下連結。

顯示時間區間

我們可傳入 … 描述的時間區間。

var body: some View {
let time1 = Date()
let time2 = Date().addingTimeInterval(100)
return Text(time1...time2)
}
var body: some View {
let time1 = Date()
let time2 = Date().addingTimeInterval(100000)
return Text(time1...time2)
}

也可以傳入以 DateInterval 描述的時間區間。

var body: some View {
let time1 = Date()
let time2 = Date().addingTimeInterval(100000)
return Text(DateInterval(start: time1, end: time2))
}

彼得潘的 Swift iOS App 開發問題解答集

彼得潘和學生們在開發 iOS App 路上曾經解決的問題集

彼得潘的 Swift iOS App 開發問題解答集

彼得潘和學生們在開發 iOS App 路上曾經解決的問題集

彼得潘的 iOS App Neverland

Written by

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

彼得潘的 Swift iOS App 開發問題解答集

彼得潘和學生們在開發 iOS App 路上曾經解決的問題集