Рассчитайте разницу во времени, когда разные iPhone имеют разные настройки времени - PullRequest
1 голос
/ 06 марта 2012

Я делаю пошаговую игру и пытаюсь выяснить, когда произошел последний ход. Я заставляю его работать следующим образом:

NSDate *lastTurn = [NSDate date]; (при отправке очереди)

... А затем рассчитайте разницу для следующего игрока, когда наступит его / ее ход:

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow];

Это прекрасно работает, если оба пользователя имеют одинаковые настройки времени. Но если у одного из игроков iphone настроен на другой часовой пояс или время установлено неверно, результат будет неправильным.

Как я могу это исправить?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Используйте время по Гринвичу вместо местного времени.

Может быть, что-то вроде этого (я не пробовал):

NSInteger sec = [[[NSCalendar currentCalendar] timeZone] secondsFromGMT];
0 голосов
/ 06 марта 2012

Я думаю, что у @StefanB есть ответ, но я бы тоже обдумал это. Может ли кто-то «обмануть», сознательно поменяв часы на своем телефоне? даже с GMT. Другая мысль заключается в том, что, будучи пошаговым, возможно, у вас будет центральный сервер, который управляет игрой. В этом случае вы можете избежать всей этой проблемы, используя время серверов, которое является общим для всех игроков и не может ими манипулировать.

...