timer - 设置一个重复的 24:00:00 倒计时计时器,该计时器在 00:00:00 停止并重置
问题描述
现在我得到一个倒数计时器,它实际上具有“24:00:00”的形式。问题是计时器在“00:00:00”后继续运行并开始倒数负数。我想要的是计时器停止在 0 并在 24 小时重复。我的问题是时间是 Data.type Date()。所以我不知道如何用 if 语句解释如果倒数计时器 == 0 时 textlabel 应该改变。我希望你理解这个问题
struct ContentView: View {
// Timer
func countDownString(from referenceDate: Date, until nowDate: Date) -> String
{
let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: referenceDate)
return String(format: "%02dh:%02dm:%02ds",
components.hour ?? 00,
components.minute ?? 00,
components.second ?? 00)
}
@State var nowDate: Date = Date()
let referenceDate: Date = Date().addingTimeInterval(20)
let calender = Calendar(identifier: .gregorian)
let formatter = DateFormatter()
var timer: Timer {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
self.nowDate = Date()
}
}
var body: some View {
Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
_ = self.timer
})
}
}
解决方案
推荐阅读
- grails - 使用 grails 3.3 在命令对象中使用共享约束
- google-cloud-dataflow - 从数据流管道将任务排入 Google TaskQueue / Cloud Tasks 队列
- javascript - 使用 JS 为 facebook 调度程序获取正确的 unix 时间戳
- reactjs - 如何在字符串中应用 URL?
- ruby-on-rails - Rails turbolinks 多次提交远程真实表单
- sass - 为什么我的字体无法正确加载?
- excel - 将变量定义的范围内的每个元素相乘
- jwplayer - 尝试从 jwplayer 运行视频时突然出现错误 100013
- python - 与可互换字符匹配的字符串
- react-native - react-native-elements 叠加边框透明度