1

私はターン制のゲームを作っており、最後のターンがいつ起こったかを把握しようとしています。私はこれを行うことでそれを機能させます:

NSDate *lastTurn = [NSDate date];(ターン送信時)

...そして、次のプレーヤーが自分の番になったときの差を計算します。

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow];

これは、両方のユーザーが同じ時間設定を持っている場合にうまく機能します。ただし、1人のプレーヤーがiPhoneを別のタイムゾーンに設定している場合、または時刻をすべて間違って設定している場合、結果は正しくありません。

どうすればこれを修正できますか?

どうもありがとう

4

2 に答える 2

1

現地時間の代わりにGMT時間を使用します。

多分このようなもの(私は試していません):

NSInteger sec = [[[NSCalendar currentCalendar] timeZone] secondsFromGMT];
于 2012-03-05T23:27:12.007 に答える
0

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

于 2012-03-05T23:34:17.213 に答える