计算不同iPhone具有不同时间设置时的时差

时间:2012-03-05 23:23:46

标签: objective-c nsdate nstimeinterval

我正在制作一个基于回合制的游戏,并试图弄清楚最后一次转弯的时间。我这样做是为了工作:

NSDate *lastTurn = [NSDate date];(发送回合时)

...然后计算下一位玩家在他/她的回合时的差异:

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow];

如果两个用户具有相同的时间设置,则此功能非常有用。但是如果一个玩家将他们的iPhone设置为不同的时区或者时间设置错误,结果将是错误的。

我该如何解决这个问题?

非常感谢

2 个答案:

答案 0 :(得分:1)

使用GMT时间而不是当地时间。

也许是这样的(我还没试过):

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

答案 1 :(得分:0)

我认为@StefanB有答案,但我也会考虑这个问题。有人可以故意改变手机上的时钟来“欺骗”吗?即使是GMT。另一个想法是,基于转弯,大概你将有一个管理游戏的中央服务器。在这种情况下,您可以通过使用所有玩家共同的服务器时间来避免这个问题,并且不能被他们操纵。