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.1ios 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:具有计时器样式的文本在提供的日期更改后不会更新