2016-11-17 47 views
1

我正在嘗試將已用時間添加到Date()對象(用於定時操作的恢復按鈕)。將已用過的TimeInterval添加到Date()

以下是代碼的簡歷部分,負責計算已更改的startDate。我期待它將elapsedTimeInterval添加到startDate

這是代碼:

print(startDate) 
let elapsed = resumeTime - startDate.timeIntervalSinceReferenceDate 
print(elapsed) 
startDate.addTimeInterval(elapsed) 
print(startDate) 

這是當我停頓約3秒計時器約2分鐘的運行時間之後的輸出。

輸出:

2016-11-17 08:24:15 +0000 
110.831687986851 
2016-11-17 08:26:06 +0000 

第二印刷日期應該更像:

2016-11-17 08:24:18 +0000 

定義爲addTimeInterval是:

添加到TimeInterval所這個日期。

這不正是我想要的嗎?我解釋錯了嗎?

注意,resumeTime是在點擊暫停按鈕時定義的。它是這樣設置的:

resumeTime = Date.timeIntervalSinceReferenceDate 

謝謝。

+1

'elapsed'的輸出是什麼? – Idan

回答

1

這是在運行約2分鐘後暫停計時器約3秒鐘時的輸出。

雖然,您的elapsed時間是2分鐘。

確保你在正確的地方開始起,還確保這條線產生所需的時間戳:

resumeTime = Date.timeIntervalSinceReferenceDate 

這裏是例子的代碼非常相似,你的,addTimeInterval沒有很好地工作。

let resume = Date().timeIntervalSinceReferenceDate + 2 

print(startDate) 
let elapsed = resume - startDate.timeIntervalSinceReferenceDate 
print(elapsed) 
startDate.addTimeInterval(elapsed) 
print(startDate) 

輸出

2016-11-17 08:53:34 +0000 
2.00815904140472 
2016-11-17 08:53:36 +0000 
+0

在閱讀您的答案後,我想出了它,請參閱我添加的答案。我投票贊成你,因爲它幾乎是我想要的。我不應該使用'startDate'。 – toast

1

我想在你的代碼中的錯誤是,你永遠不設置startDate了,所以你elapsed計算總是基於當應用程序第一次運行,沒有時間自上次暫停以來已過去。

相關問題