【问题标题】:SwiftUI display yesterday's dateSwiftUI 显示昨天的日期
【发布时间】:2020-02-26 12:08:11
【问题描述】:

如何在 SwiftUI 中列出昨天的日期?这可能是一个简单的答案,但我只是在学习编码,出于某种原因,我似乎无法在任何地方找到解决方案。是不是太容易了?

struct DateShown: View {
    let datechoice: Datechoice
    var body: some View {
        Text(currentDate(date: Date()))
            .font(.headline)
            .fontWeight(.bold)
            .foregroundColor(.blue)
    }

    func currentDate(date: Date!) -> String {
        let formatter = DateFormatter()
        formatter.locale = .current
        formatter.dateFormat = "MMMM d, yyyy"
        return date == nil ? "" : formatter.string(from: date)
    }
}

【问题讨论】:

  • 与问题无关,但从不将隐式展开的可选项声明为参数类型。如果它应该是可选的,则将其声明为常规可选 (?)。但在这里它应该是非可选的。
  • 这能回答你的问题吗? NSDate of yesterday
  • @vadian 感谢您分享您的知识。 “永远不要将隐式未包装的可选项声明为参数类型。如果它应该是可选项,请将其声明为常规可选项(?)”是什么意思?
  • @vadian 是的,但我正试图将它变成过去日期的数组。谢谢。
  • 声明date: Date?date: Date。在你的情况下,后者是因为你想转换一个具体的日期。对于日期数学Calendar 是最佳选择。

标签: swiftui swift5


【解决方案1】:

我宁愿使用视图扩展,尽管您还需要日期格式,所以我采用了更简单的方法并扩展了您的解决方案。如果“dayComponent.day”行的数字是正数,那么您会及时走得更远。我在以下条件下进行了测试:

  • 斯威夫特 5
  • xcode 11.3.1
  • iOS 13.3.1 非测试版

    func yesterDay() -> String {
        var dayComponent = DateComponents()
        dayComponent.day = -1
        let calendar = Calendar.current
        let nextDay =  calendar.date(byAdding: dayComponent, to: Date())!
        let formatter = DateFormatter()
        formatter.locale = .current
        formatter.dateFormat = "MMMM d, yyyy"
        return formatter.string(from: nextDay). //Output is "March 6, 2020
    }
    

用法和你一样:

Text(yesterDay())

【讨论】:

    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多