SwiftUI 显示昨天的日期

Posted

技术标签:

【中文标题】SwiftUI 显示昨天的日期【英文标题】:SwiftUI display yesterday's date 【发布时间】: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 是最佳选择。 【参考方案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())

【讨论】:

以上是关于SwiftUI 显示昨天的日期的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何根据日期每天显示一个新视图,而以前的视图持续一周

在 SwiftUI 中创建具有特定日期的 DatePicker

SwiftUI:具有计时器样式的文本在提供的日期更改后不会更新

时间和日期格式化程序 SwiftUI JSON 数据

SwiftUI DatePicker 在更改日期时在短日期格式和中日期格式之间跳转

在列表行中制作等宽的 SwiftUI 视图