有没有办法在不使用[NSDate日期]的情况下检索当前日期和时间

时间:2015-11-10 05:26:27

标签: ios objective-c nsdate

我做了一个申请,我需要显示一个30分钟的倒数计时器,30分钟后我需要显示优惠券已过期。它工作正常。

{    
NSInteger seconds = [[NSDate date] timeIntervalSinceDate:dateDue];
}

但如果有人更改了移动日期或时间,计时器就会打扰并显示错误的值。这样就可以在不使用 [NSDate date] 的情况下找到当前日期和时间,所以我使用它为我的倒数计时器。请给出你的建议..

2 个答案:

答案 0 :(得分:0)

您要找的是CACurrentMediaTime()。或mach_absolute_time()

答案 1 :(得分:0)

目标c只是它的核心;您可以使用任何标准的ansi-c兼容方法,例如:

time_t time;
struct tm * timeinfo; 
time (&time);
timeinfo = localtime (&time);

现在你有当地的时间代表,你可以得到如下的细节:

Year:  "timeinfo->tm_year+1900;"
Month: "timeinfo->tm_mon+1;"
Date:  "timeinfo->tm_mday;"
Hour:  "timeinfo->tm_hour;"
Mins:  "timeinfo->tm_min;"
Secs:  "timeinfo->tm_sec;"

这次是本地的;要获得GMT时间,请使用gmtime()替换对localtime()的调用。

感谢来自:https://stackoverflow.com/a/31646117/2748303

快乐黑客!

编辑:看起来你真正想要的是一个绝对的epoc时间戳,用于计数器何时开始,一个用于何时完成。

在这种情况下,我会使用:

time_t now = time(0);

返回epoc以来的毫秒数,并进行适当的比较。