2012-03-05 87 views
1

我正在做一個基於回合的遊戲,並試圖找出最後一個回合發生的時間。我把它做這個工作:當不同的iPhone有不同的時間設置時計算時差

NSDate *lastTurn = [NSDate date];(發送時請將)

...然後計算下一個球員的區別時,這是他/她轉:

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow]; 

這如果兩個用戶具有相同的時間設置,則效果很好。但是,如果一個玩家將他們的iphone設置爲不同的時區或時間設置錯了,結果將是錯誤的。

我該如何解決這個問題?

非常感謝

+0

你究竟看到了什麼讓你說「結果將會錯誤」。 NSDate代表了獨立於任何時區的時刻。不同的用戶在不同的時區應該沒有問題比較NSDate值 – 2012-03-05 23:31:51

回答

1

使用GMT時間,而不是本地時間。

也許這樣的事情(我沒試過):

NSInteger sec = [[[NSCalendar currentCalendar] timeZone] secondsFromGMT]; 
+0

檢查這看看如何得到GMT http://stackoverflow.com/questions/1490537/gmt-time-on-iphone – twain249 2012-03-05 23:31:13

0

我認爲@StefanB有答案,但我也會考慮這一點。有人可以通過故意改變手機上的時鐘來「欺騙」嗎?即使有GMT。另一個想法是,基於回合,大概你會有一箇中央服務器來管理遊戲。在這種情況下,您可以通過使用所有玩家共同的服務器時間來避免這個問題,並且不能被他們操縱。