2012-03-05 17 views
1

私はターンベースのゲームを作っていて、最後のターンがいつ起きたかを調べようとしています。 (ターンを送信する場合)異なるiPhoneの時間設定が異なる場合の時間差を計算する

NSDate *lastTurn = [NSDate date]; ...そして、それは彼/彼女の番だ時に次のプレーヤーのための差異を計算します:私はそれがこれを行うことによって、仕事を得る

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow]; 

この両方のユーザーが同じ時間設定を使用している場合に効果的です。しかし、1人のプレーヤーが異なるタイムゾーンに設定されているiPhoneを持っているか、時間が間違って設定されていると、結果は間違っています。

どうすればこの問題を解決できますか?

感謝

+0

「結果が間違っている」と言っているのは正確に何を見ているのですか? NSDateは、任意のタイムゾーンから独立した時間を表します。異なるタイムゾーンの異なるユーザーは、NSDateの値を比較する際に問題がありません。 –

答えて

1

使用GMT時間の代わりに、ローカルタイム。

はたぶん、この(私は試していない)のようなもの:

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

これをチェックして、GMTを取得する方法を確認してください。http://stackoverflow.com/questions/1490537/gmt-time-on-iphone – twain249

0

私は@StefanBが答えを持っていると思うが、私はまた、これを検討します。誰かが電話で故意に時計を変えることで「チート」することはできますか? GMTでももう一つの考えは、ターンベースであるということです。おそらく、あなたはゲームを管理する中央サーバを持つつもりです。この場合、すべてのプレイヤーに共通のサーバー時間を使用することで、この全体的な問題を回避することができ、それらのサーバーによって操作することはできません。

関連する問題