首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据实际经过的秒数进行倒计时(如时钟)

根据实际经过的秒数进行倒计时(如时钟)
EN

Stack Overflow用户
提问于 2019-06-13 23:25:49
回答 1查看 41关注 0票数 0

我需要创建一个从30到0的倒计时,当它达到0时,回到30,我还需要与真实时钟相关的秒数,例如,如果我回到视图(即使我关闭了应用程序),我不应该看到倒计时总是从30开始,而是应该在基于所经过的时间的位置(在0-30的范围内)。

我得到的最接近的是:

代码语言:javascript
运行
复制
let date = Date()
let calendar = Calendar.current
globalSeconds = calendar.component(.second, from: date)
print(globalSeconds)

实现的主要问题是它基于60秒,而不是30秒。在这个例子中,这些值是递增的,我需要它们递减。

EN

回答 1

Stack Overflow用户

发布于 2019-06-13 23:50:43

您可以在30秒后创建一个date对象。然后将当前日期与该对象进行比较,以确定计时器应该在哪里。

我是在一个游乐场上做的,你需要根据你的特定需求来修改它。

代码语言:javascript
运行
复制
let futureDate = Date().addingTimeInterval(30).timeIntervalSince1970
var secondsLeft = TimeInterval(30)

Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
    secondsLeft = futureDate - Date().timeIntervalSince1970
    print(secondsLeft)
    if secondsLeft <= 0 {
        timer.invalidate()
    }
}

输出也需要进行一些清理

代码语言:javascript
运行
复制
28.993669986724854
27.993721961975098
26.994149923324585
25.993762016296387
24.993871927261353
23.99389910697937
22.993980169296265
21.99391198158264
20.994942903518677
19.9939968585968
18.995089054107666
17.994417905807495
16.994072198867798
15.994122982025146
14.994197130203247
13.994181871414185
12.99530816078186
11.99462604522705
10.994287014007568
9.994328022003174
8.99430799484253
7.995084047317505
6.994402170181274
5.99443793296814
4.995491027832031
3.9945170879364014
2.9945571422576904
1.9946701526641846
0.9946119785308838
-0.005316019058227539
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56583857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档