2017-08-29 57 views
0

我有一個當前時間和一個靜態時間(例如 - 昨天晚上9.30時),我需要找出這兩個時間之間的時差,以hh:mm: ss格式。如何用靜態時間計算當前時間和昨天日期之間的時間差

這是我用來獲取當前時間的代碼:

let date = Date() 
let calendar = Calendar.current 

let hour = calendar.component(.hour, from: date) 
let minutes = calendar.component(.minute, from: date) 
let seconds = calendar.component(.second, from: date) 
print("hours = \(hour):\(minutes):\(seconds)") 

回答

4

試試這個: -

let dateFormatter = DateFormatter() 
    var userCalendar = Calendar.current 
    userCalendar.timeZone = TimeZone.current 
    let requestedComponent: Set<Calendar.Component> = [.hour,.minute,.second] 
    dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss" 
    let startTime = Date() 
    let endTime = dateFormatter.date(from: "28/08/17 08:40:00") 
    let timeDifference = userCalendar.dateComponents(requestedComponent, from: endTime!, to: startTime) 
    print(timeDifference) 
    let date = Calendar(identifier: .gregorian).date(from: timeDifference) 
    dateFormatter.dateFormat = "HH:mm:ss" 
    let dateString = dateFormatter.string(from: date!) 

    print(dateString) 

您可以根據您的要求更改格式。

0
let date = Date() 
let cal = Calendar.current 
let formatter = DateFormatter() 
formatter.dateFormat = "HH:mm:ss" 
let staticTime = ... 
let comps = cal.dateComponents([.hour, .minute, .second], from: date, to: staticTime) 
let diff = cal.date(from: comps)! 
let diffString = formatter.string(from: diff) 
+0

您好,我在let comps = cal.dateComponents([。hour,.minute,.second],from:date,to:staticTime)中忘記了「沒有更多上下文的表達式的類型是模糊的」 – Arun

+0

您需要將'statcTime'變量初始化爲'Date' –

相關問題