Swift — 說說 時間( Date )

一個特定的時間點,獨立於任何日曆或是時區。

Jeremy Xue
4 min readJul 16, 2018

前言:

因為目前打算做一個小型的 Side Project 上架,然後因為這個 APP 許多地方都必須記錄它的時間,舉凡開始時間、結束時間與持續時間。因此我這次就選擇 Date 這個主題下手,順便複習一下它的功能。

概論:

Date 值封裝了單個時間點,與任何特定的日曆與時區無關。日期值表示相對於絕對參考日期的時間間隔。

Date 結構提供了比較日期,計算兩個日期之間的時間間隔以及相對於另一個日期的時間間隔創建新日期的方法。將日期值與 DateFormatter 實例結合使用以創建日期和時間的本地化表示,並使用 Calendar 實力執行日曆算法。

TimeInterval:

Date 初始化方式

不論你是要取用或是初始化 Date 實例,通常會必須其時間間隔,讓它藉由這個兩者的時間間隔得出我們所需的時間戳( time stamp )。

timeIntervalSinceNow // 日期值與當前日期和時間之間的時間間隔。
timeIntervalSince1970 // 日期值與1970年1月1日00:00:00 UTC之間的間隔。
timeIntervalSinceReferenceDate // 日期值與2001年1月1日00:00:00 UTC之間的間隔。

而我們取得這的個時間戳就是以上面三個屬性或是其它自訂的時間來得出,我們可以用一段程式碼來查看我們 print 出的時間戳:

let date = Date()
print("Time Stamp:\(date.timeIntervalSince1970)")
print 出的 date.timeIntervalSince1970 的時間戳

當然這種時間戳不是我們要的結果,因此,我們會使用 DateFormatter 將這個結果換算成我們要的結果,下面我們來簡單轉換一下時間格式。我們可以用上面的時間戳來將它換算成我們的時間結果:

// 我們上面 print 出的時間戳
let timeStamp = 1531712687.41803
// 將時間戳轉換成 TimeInterval
let timeInterval = TimeInterval(timeStamp)
// 初始化一個 Date
let date = Date(timeIntervalSince1970: timeInterval)
// 實例化一個 DateFormatter
let dateFormatter = DateFormatter()
// 設定日期格式
dateFormatter.dateFormat = "yyyy/MM/dd HH:mm"
// 將日期轉換成 string 輸出給 today
let today = dateFormatter.string(from: date)
print("Time Stamp's Current Time:\(today)")

沒有問題的話,他應該也會印出下列結果:

--

--

Jeremy Xue
Jeremy Xue

Written by Jeremy Xue

Hi, I’m Jeremy. [好想工作室 — iOS Developer]

No responses yet