微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我将如何在 SwiftUI

如何解决我将如何在 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.

解决方法

  1. 在 Swift 中,通常变量名是小写的:
let dates : [String] = ["2021-01-07","2021-01-19"]
  1. 要显示 Text 中的这些内容,您需要将 [String] 变成 String。一种可能性是:
Text(dates.joined(separator: ","))
  1. 如果您希望它们采用不同的格式,则需要将 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
    }
}

结果:

Today is 2021-04-1170,2021-01-07,2021-01-19

请注意,"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 举报,一经查实,本站将立刻删除。