【问题标题】:Countdown hours bug (NSDate and Objective-C)倒计时错误(NSDate 和 Objective-C)
【发布时间】:2016-03-04 12:44:21
【问题描述】:

我的倒计时有点问题,实际上一切正常,但时间的格式不正确,也就是说,它告诉我:

03:94:20:38

但在我看来,真正的倒计时是:

03:22:20:38


我的代码:

 - (void)updateCounter:(NSTimer *)tmr
{
    self.dateContest.hidden = NO;
    NSTimeInterval iv = [self.date timeIntervalSinceNow];
    int d = iv / 86400;
    int h = iv / 3600; // My problem
    int m = (iv - h * 3600) / 60;
    int s = iv - h * 3600 - m * 60;
    self.dateContest.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", d, h, m, s];
    if (d + h + m + s <= 0) {
        [tmr invalidate];
    }
}

【问题讨论】:

  • 为什么不使用 NSDateFormatter?
  • 显然你有 3 天 22 小时等于 94 小时。 94 是您的代码计算的值。有什么理由不使用 NSInteger?而且您的到期测试非常可疑。要么说服我它是正确的,要么检查 iv

标签: ios objective-c date nsdate countdown


【解决方案1】:

你也必须减去那天的时间

int d = iv / 86400;
    int h = (iv / 3600) - (d * 24); 
int m = (iv - (h + d * 24) * 3600) / 60
int s = lroundf(iv) % 60

【讨论】:

  • 它有效,但现在只有几分钟的问题(4325 分钟)
  • 非常感谢它的工作和最后一个小问题,几秒钟怎么办,因为它不工作?
  • 不行,有错误(无效操作数)
  • 对不起,我忘了双倍,现在检查
猜你喜欢
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
相关资源
最近更新 更多