2016-11-30 37 views
0

我有一個TimeInterval我不得不把它變成一個String,因此它可以被添加到被從Apple關注通過WatchConnectivity傳遞給iPhone的Dictionary。現在轉換爲TimeInterval所字符串<del>字符串爲時間間隔</del>

String在iPhone上,我需要把它放回一個TimeInterval,但我似乎無法找出答案。

(我需要在UILabel顯示鍛鍊時段的持續時間來顯示這一點。)

任何想法?

對於實施例

觀看

○點15分十五秒(小時,分,秒)變爲 「915.012948989868」

let myDouble = computeDurationOfWorkout(withEvents: hkWorkout?.workoutEvents, startDate: hkWorkout?.startDate, endDate: hkWorkout?.endDate) 
    let myDoubleString = String(myDouble) 
    durationVariableString = myDoubleString 

iPhone

需要變「915.01294898 9868「回到00:15:15

+0

如何:http://stackoverflow.com/questions/26794703/swift-integer-conversion-to-hours-minutes-seconds – toddg

+0

你的問題很混亂。看起來你已經有了將TimeInterval轉換爲格式爲hh:mm:ss的字符串的代碼。看起來你已經有了將字符串轉換回'TimeInterval'(double)的代碼。你究竟在尋求什麼幫助? – rmaddy

+0

@toddg我會檢查出這個鏈接,謝謝! – SRMR

回答

2

使用calendar.dateComponents,你可以轉換到91500:15:15

func stringFromTimeInterval (interval: String) -> String { 
     let endingDate = Date() 
     if let timeInterval = TimeInterval(interval) { 
      let startingDate = endingDate.addingTimeInterval(-timeInterval) 
      let calendar = Calendar.current 

      var componentsNow = calendar.dateComponents([.hour, .minute, .second], from: startingDate, to: endingDate) 
      if let hour = componentsNow.hour, let minute = componentsNow.minute, let seconds = componentsNow.second { 
       return "\(hour):\(minute):\(seconds)" 
      } else { 
       return "00:00:00" 
      } 

     } else { 
      return "00:00:00" 
     } 
    } 
+0

感謝您的迴應!這並不完全合適,因爲我需要傳遞'String'作爲參數,而不是'TimeInterval'作爲參數。然後我需要返回一個'TimeInterval',而不是返回一個'String'。有什麼想法嗎? – SRMR

+0

你需要一個你傳遞00:15:15的函數,它會返回915? – Rajat

+0

一個函數,我傳入一個'String'「915。012948989868「,並取回一個'TimeInterval'」00:15:15「。像'func timeIntervalFromString(string:String) - > TimeInterval'或其他什麼? – SRMR

1

而不是將時間間隔轉換爲字符串,而是將其轉換爲可添加到詞典的NSNumber。 NSTimeInterval只是一個雙精度,所以你可以輕鬆地將它轉換成雙精度。

let timeInterval: TimeInterval = 915.012948989868 

let dict = ["TimeIneterval": NSNumber(value: timeInterval)] 

if let extractedTimeInterval: TimeInterval = dict["TimeIneterval"] as? TimeInterval { 

    print(extractedTimeInterval) 
} 
+0

感謝您的迴應!我會試試這個。一旦我將'NSNumber'通過詞典傳遞給iPhone,一旦我得到了iPhone上的'NSNumber',我只需要將它轉換回'TimeInterval'呢? – SRMR