我正在制作一个基于回合制的游戏,并试图弄清楚最后一次转弯的时间。我这样做是为了工作:
NSDate *lastTurn = [NSDate date];
(发送回合时)
...然后计算下一位玩家在他/她的回合时的差异:
NSTimeInterval *diff = [lastTurn timeIntervalSinceNow];
如果两个用户具有相同的时间设置,则此功能非常有用。但是如果一个玩家将他们的iPhone设置为不同的时区或者时间设置错误,结果将是错误的。
我该如何解决这个问题?
非常感谢
答案 0 :(得分:1)
使用GMT时间而不是当地时间。
也许是这样的(我还没试过):
NSInteger sec = [[[NSCalendar currentCalendar] timeZone] secondsFromGMT];
答案 1 :(得分:0)
我认为@StefanB有答案,但我也会考虑这个问题。有人可以故意改变手机上的时钟来“欺骗”吗?即使是GMT。另一个想法是,基于转弯,大概你将有一个管理游戏的中央服务器。在这种情况下,您可以通过使用所有玩家共同的服务器时间来避免这个问题,并且不能被他们操纵。