我想为餐馆开发一个系统,想要计算剩余的时间(比如披萨的5分钟),
我想知道这个计数器的基本代码是什么,比如我如何使用NSDate或任何其他类???
请指导
答案 0 :(得分:3)
获取某个NSDate后的秒数:
[[NSDate date] timeIntervalSinceDate:startingDate];
[NSDate date]返回当前的NSDate对象,它等于当前的日期和时间。
答案 1 :(得分:1)
我认为你可以实现一个定期计时器,每30秒节奏一次(不要太快),它将轮询所有待处理的请求并更新每个订单的倒计时,并向你发出所有到达倒计时的订单。
例如:假设您需要5分钟的订单。然后,您将通过向当前日期添加5 * 60秒来计算订单准备的日期:
NSDate *orderReadyAt = [NSDate dateWithTimeIntervalSinceNow:5*60];
然后,您将此日期存储到您的订单结束日期属性中。 E.g:
Order *myOrder = [[Order alloc] init];
... make your order here ...
myOrder.readyDate = orderReadyAt;
在应用程序启动时,您将定义一个定期计时器,每30秒触发一次,并调用“countdownCheck”函数:
[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(countdownCheck) userInfo:nil repeats:YES];
此时你在countdownCheck中要做的就是遍历你的Order实例,并为每个实例计算剩余时间:
-(void)countdownCheck {
for(Order *aOrder in allOrders) {
NSTimeInterval secondsRemaining = [aOrder.readyDate timeIntervalSinceNow];
//... do something: update your GUI, show an alert if secondsRemaining<0...
}
}
显然,这种方法不是时间关键,唯一的要求是在30秒限制内运行countdownCheck内的代码,这当然绰绰有余。理想情况下,只要你的循环足够快,就可以将它设置为1秒。