2012-03-05 31 views
1

我正在做一个基于回合的游戏,并试图找出最后一个回合发生的时间。我把它做这个工作:当不同的iPhone有不同的时间设置时计算时差

NSDate *lastTurn = [NSDate date];(发送时请将)

...然后计算下一个球员的区别时,这是他/她转:

NSTimeInterval *diff = [lastTurn timeIntervalSinceNow]; 

这如果两个用户具有相同的时间设置,则效果很好。但是,如果一个玩家将他们的iphone设置为不同的时区或时间设置错了,结果将是错误的。

我该如何解决这个问题?

非常感谢

+0

你究竟看到了什么让你说“结果将会错误”。 NSDate代表了独立于任何时区的时刻。不同的用户在不同的时区应该没有问题比较NSDate值 – 2012-03-05 23:31:51

回答

1

使用GMT时间,而不是本地时间。

也许这样的事情(我没试过):

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

检查这看看如何得到GMT http://stackoverflow.com/questions/1490537/gmt-time-on-iphone – twain249 2012-03-05 23:31:13

0

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