在构建名为stagetimer.io的事件计时器应用程序时,我遇到了显示时间的异常现象,发现iPhone计时器通过向我们显示假时间来解决该问题。根据定义,倒数显示剩余时间。因此,如果倒数计时为5秒,我们假设还剩5秒。但这不是全部。
iPhone的倒数计时器未严格显示正确的时间,但会增加500ms或半秒的剩余时间。这样做可以使人类更直观地阅读时间。倒计时结束时的警报不受此500ms错误的影响。
Javascript在处理时间时喜欢使用毫秒,1000ms等于1s。这是一个5秒倒计时的示例,该倒计时从5000毫秒开始,并使用setInterval()函数每10毫秒减去10毫秒,这非常简单。通过除以1000并四舍五入将毫秒数转换为秒,如下所示:Math.floor(milliseconds / 1000)
到达开始时,计时器会立即跳到4s,一旦计时器切换到0s,仍然还有1s。这在向上计数时非常有意义,例如,在上午10点的第一分钟显示10:00,而不是10:01,始终四舍五入。但是对于倒数计时器,这是违反直觉的。计时器是否显示小数秒更容易理解。
现在,计时器显示的是0.9s秒而不是0s,以清楚地显示时钟上还有剩余时间。但是,我不想为计时器显示小数秒。
所以现在我很好奇我的iPhone如何解决这个难题。因此,我将iPhone计时器设置为5s:
单击“开始”后,iPhone计时器显示5s,而不是上面示例中的4s。但它会在整整一秒钟到期之前切换到4s。然后,它会计数适当的秒数,直到达到0s,这又不是整秒。而且,如果您在“暂停”跳到0s之后立即点击,它将立即跳回到1s,以显示实际上倒计时还剩下一些时间。
我认为,苹果公司的好伙伴在实际时间上增加了500ms的伪造时间,以5s而不是4s开始倒计时显示。 如果实际时间达到0s,“假”时间达到500ms,计时器结束并且电话发出蜂鸣声。 因此他们遇到了我遇到的相同问题,并提出了一个切实可行的解决方案。 毕竟,如果您开始倒数计时5s,则应该从5s开始计时,对吧? 为了说明,这是我的简单计时器执行的相同操作。 如果这篇文章对您有帮助或有任何疑问,我希望收到您的来信。 推特