我做了一个申请,我需要显示一个30分钟的倒数计时器,30分钟后我需要显示优惠券已过期。它工作正常。
{
NSInteger seconds = [[NSDate date] timeIntervalSinceDate:dateDue];
}
但如果有人更改了移动日期或时间,计时器就会打扰并显示错误的值。这样就可以在不使用 [NSDate date] 的情况下找到当前日期和时间,所以我使用它为我的倒数计时器。请给出你的建议..
答案 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以来的毫秒数,并进行适当的比较。