无法更改 swift 中的日期格式

Unable to change format of date in swift

我正在获取这样的日期 2019-01-02 18:10:00 +0000,现在我想将其转换为 dd/MM/yyyy HH:mm 格式,但我无法获取它。

我在日期扩展中使用此方法

func getDate() -> Date {
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    formatter.dateFormat = "dd/MM/yyyy HH:mm"
    let dateString = formatter.string(from: self)
    return formatter.date(from: dateString) ?? Date()
}

当xcode执行这一行时

let dateString = formatter.string(from: self)

结果是我想要的格式,但是当最后一行被执行时日期returns回到旧格式

你做错了。如果需要显示日期,请使用格式化的 String 而不是 Date 对象。

func getDate() -> String {
    let formatter = DateFormatter()
    // Set the appropriate time zone or locale
    formatter.dateFormat = "dd/MM/yyyy HH:mm"
    return formatter.string(from: self)
}

你糊涂了。 Date 对象没有格式。它记录了一个时刻。您必须将其转换为日期 String 以赋予其格式。

您的代码可以做到这一点,这很好。但是,您做的最后一件事是将其转换回 Date,并丢弃您创建的格式化字符串。这毫无意义。

服务器很可能需要日期字符串。您应该将函数重写为 return 日期字符串,如 Rakesha Shastri 的回答。