如何解决我将如何在 SwiftUI
我有一组日期
let Dates = ["2021-01-07","2021-01-19"]
我想在文本中显示它们作为刺
Text("\(Dates)")
但是我一直收到错误
Cannot call value of non-function type '[String]'.
我想知道这是否可以在 swiftUI 中实现。
我还想知道我是否可以以这种格式显示今天的日期
YYYY-MM-DDT00:00:00Z.
解决方法
- 在 Swift 中,通常变量名是小写的:
let dates : [String] = ["2021-01-07","2021-01-19"]
- 要显示
Text
中的这些内容,您需要将[String]
变成String
。一种可能性是:
Text(dates.joined(separator: ","))
- 如果您希望它们采用不同的格式,则需要将
String
转换为Date
:
struct ContentView: View {
@State private var formatterIn = DateFormatter()
@State private var formatterOut = ISO8601DateFormatter()
let dates : [String] = ["2021-01-07","2021-01-19"]
var datesToNewFormat : String {
formatterIn.dateFormat = "yyyy-MM-dd"
return dates.compactMap { formatterIn.date(from: $0) }.map { formatterOut.string(from: $0)}
.joined(separator: ",")
}
var body: some View {
VStack {
Text(dates.joined(separator: ","))
Text(datesToNewFormat)
}
}
}
注意最后一项,它也处理时区转换。在您的示例中,如果您想要 T00:00:00Z
,最简单的 事情就是将其附加到原始字符串的末尾:
dates.map { $0 + "T00:00:00Z" }
或者,您可以使用 DateComponents 手动将小时设置为零。这一切可能都取决于您的输入来自何处以及您对输出的意图。
可能还值得一提的是,SwiftUI 具有一些内置工具,用于在 Date
中显示 Text
。见https://www.hackingwithswift.com/quick-start/swiftui/how-to-format-dates-inside-text-views
我想知道这是否可以在 swiftUI 中实现。
当然!
struct ContentView: View {
let dates = ["2021-01-07","2021-01-19"]
var body: some View {
VStack {
Text("Today is \(todayDate())")
ForEach(dates,id: \.self) { date in
Text("\(date)")
}
}
}
func todayDate() -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "YYYY-MM-DDT00:00:00Z"
let today = Date() /// Date() is the current date
let todayAsString = dateFormatter.string(from: today)
return todayAsString
}
}
结果:
请注意,"YYYY-MM-DDT00:00:00Z"
日期格式的结果为 2021-04-1170
。你可能想要像 2021-04-27T11:56:55-0700
这样的东西。在这种情况下,做
dateFormatter.dateFormat = "YYYY-MM-d'T'HH:mm:ssZ"
''
包含您要添加的自定义字符,例如 T
。对于其他格式字符,请查看 this website。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。