SwiftUI 上两个日期之间的区别

Difference between the 2 dates on SwiftUI

我试图找出这两个日期之间的差异,但是,我不断收到错误消息。

这是我的代码:

let fmt = ISO8601DateFormatter()
        
let date1 = fmt.date(from: "2017-08-06")!
let date2 = fmt.date(from: "2020-08-06")!

let diffs = Calendar.current.dateComponents([.day], from: date1, to: date2)
        
Text(diffs)

我也导入了粉底

我的错误是 Initializer init(_:) 要求 DateComponents 符合 StringProtocol

任何帮助都会很棒。

这里有几个问题:

  1. 使用您当前的代码,当您尝试将日期字符串转换为日期时会遇到崩溃,因为它无法正确解析并且您正在使用 !。这可以通过以不同方式格式化字符串来解决

  2. 您正在尝试将 DateComponents 传递给 Text,这需要符合 StringProtocol 的输入(如错误所述),DateComponents 没有。您可以使用 DateComponentsFormatter 转换为 String

struct ContentView: View {
    private let fmt = ISO8601DateFormatter()
    private let formatter = DateComponentsFormatter()
    
    var diffs : DateComponents {
        guard let date1 = fmt.date(from: "2017-08-06T00:00:00Z"),
              let date2 = fmt.date(from: "2020-08-06T00:00:00Z") else {
            return DateComponents()
        }
        return Calendar.current.dateComponents([.day], from: date1, to: date2)
    }
    
    var body: some View {
        Text("\(formatter.string(from: diffs) ?? "unknown")")
    }
}

如果经常重新渲染此组件,最好将格式化程序存储在不会每次都重新创建的地方。