Objective c 如何比较加载的时间/日期

Objective c 如何比较加载的时间/日期,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我正在cocos2d中创建一个游戏。在这场比赛中,有一个能量棒,这个能量棒每5分钟恢复一次活力。我希望这种恢复能够在整个应用程序运行中起作用 我在想,我所能想到的就是将应用程序最后一次终止的日期/时间保存在NSUserDefaults中,并将其与重新打开后的新日期进行比较,然后除以恢复时间,再加上正确的累积能量。。。然而,我不知道如何将一个字符串与一个字符串+10小时或我的恢复时间进行比较。基本上,我希望跟踪应用程序打开或关闭时的运行时间。这相当简单,您可以通过以下方式从历元中获取当前时间(以毫

我正在cocos2d中创建一个游戏。在这场比赛中,有一个能量棒,这个能量棒每5分钟恢复一次活力。我希望这种恢复能够在整个应用程序运行中起作用


我在想,我所能想到的就是将应用程序最后一次终止的日期/时间保存在NSUserDefaults中,并将其与重新打开后的新日期进行比较,然后除以恢复时间,再加上正确的累积能量。。。然而,我不知道如何将一个字符串与一个字符串+10小时或我的恢复时间进行比较。基本上,我希望跟踪应用程序打开或关闭时的运行时间。

这相当简单,您可以通过以下方式从历元中获取当前时间(以毫秒为单位):

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
将此值存储在默认值中。它实际上是一个
双精度
,因此您可以存储它:

[[NSUserDefaults standardUserDefaults] setDouble:now forKey:@"lastClosed"];
然后,您可以使用上述
NSDate
类方法获取应用程序重新启动的时间,并将它们进行比较:

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval timeFromUserDefaults = [[NSUserDefaults standardUserDefaults] doubleForKey:@"lastClosed"];
int numSecondsPassed = (timeFromUserDefaults - now);

这相当简单,您可以通过以下方式从历元中获取当前时间(以毫秒为单位):

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
将此值存储在默认值中。它实际上是一个
双精度
,因此您可以存储它:

[[NSUserDefaults standardUserDefaults] setDouble:now forKey:@"lastClosed"];
然后,您可以使用上述
NSDate
类方法获取应用程序重新启动的时间,并将它们进行比较:

NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval timeFromUserDefaults = [[NSUserDefaults standardUserDefaults] doubleForKey:@"lastClosed"];
int numSecondsPassed = (timeFromUserDefaults - now);

请注意,为了通过将设备的时间更改为更早的时间来防止作弊,您应该记录应用程序终止时的当前时间。下次启动时,将存储的时间与当前设备时间进行比较,如果后者更早,则几乎可以确定用户试图通过重置时钟进行欺骗。几乎是因为每年有一次夏时制时间将时钟向后拨。请注意,为了防止作弊,将设备的时间改为更早的时间,您应该在应用程序终止时记录当前时间。下次启动时,将存储的时间与当前设备时间进行比较,如果后者更早,则几乎可以确定用户试图通过重置时钟进行欺骗。几乎是因为每年都会有一次夏令时让时间倒转。LearnCos2D-谢谢你的回复,如果你什么都不说,我就不会想到这一点了Craig干杯-谢谢你的回复。。。为了对抗LearnCos2ds的建议,是否有一个全球时间,我们可以根据上述代码而不是当前的电话时间?我是否需要安装一台服务器,并根据时间来确定?有什么建议吗?感谢您,您必须维护一台服务器才能获得非特定于设备的时间。在我看来,除非这是一个网络/多人游戏,否则如果有人愿意改变他们的设备时间来恢复HP,就让他们来吧。:)LearnCos2D-谢谢你的回复,如果你什么都不说的话,我也不会想到的,Craig干杯-谢谢你的回复。。。为了对抗LearnCos2ds的建议,是否有一个全球时间,我们可以根据上述代码而不是当前的电话时间?我是否需要安装一台服务器,并根据时间来确定?有什么建议吗?感谢您,您必须维护一台服务器才能获得非特定于设备的时间。在我看来,除非这是一个网络/多人游戏,否则如果有人愿意改变他们的设备时间来恢复HP,就让他们来吧。:)