如何在 swiftui 中从给定的字符串类型日期设置日期倒计时?

1 swift swiftui

如何在 swiftui 中设置日期倒计时。我想每秒更新减少时间。但我不明白如何解决这个问题?

  struct TimerExample: View {
    @State var currentTime = Date.now
  @State var inputDate = "2022-12-03 12:20:09"
    
    var body: some View {
        Text("The time is: \(convertDateFormat(inputDate: inputDate))")
            .padding()
            .onAppear(perform: {
                Timer.scheduledTimer(withTimeInterval:1.0, repeats: true) {
                     time in
                    currentTime = Date.now
                }
            })
         }
   func convertDateFormat(inputDate: String) -> String {

         let olDateFormatter = DateFormatter()
         olDateFormatter.dateFormat =   "yyyy-MM-dd hh:mm:ss" //"yyyy-MM-dd'T'HH:mm:ss"

         let oldDate = olDateFormatter.date(from: inputDate)

         let convertDateFormatter = DateFormatter()
         convertDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"

         return convertDateFormatter.string(from: oldDate!)
    }
  }
Run Code Online (Sandbox Code Playgroud)

Ash*_*lls 6

您可以使用 aTimelineViewTextwith来实现此目的style: .timer,如下所示:

struct ContentView: View {
        
    var body: some View {
        TimerExample(endDate: .now + 500)
    }
}

struct TimerExample: View {
    
    let endDate: Date
    
    var body: some View {
        TimelineView(.periodic(from: .now, by: 1)) { context in
            VStack {
                Text("Time remaining:")
                Text(endDate, style: .timer)
                    .font(.title)
                Spacer()
            }
            .padding()
        }
        
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述