2016-11-17 6 views
1

Date()オブジェクト(タイムド操作のレジュームボタン用)に経過時間を追加しようとしています。Date()に経過時間TimeIntervalを追加する

以下は、変更されたstartDateの計算を担当するコードのレジューム部分です。 elapsedTimeIntervalstartDateに追加することを期待しています。私は、実行時の約2分後に約3秒のタイマーを一時停止したときにこれが出力され

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

これはコードです。

出力:

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

第2のプリント日付をもっとしなければならない:

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

addTimeIntervalの定義は次のとおりです。

は、この日に時間間隔を追加します。

これはまさに私が望むものではありませんか?私はこれを間違って解釈していますか?

注: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

私はあなたのコード内の間違いは、あなたがそうあなたのelapsed計算は常にアプリが最初に実行したときに基づいており、再びstartDateを設定したことがないということだと思う、ない時間最後に一時停止してからの経過時間です。

関連する問題