无法在swift中更改日期格式

Gul*_*han -1 date swift dateformatter

我现在得到这样的日期,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()
}
Run Code Online (Sandbox Code Playgroud)

当xcode执行此行时

let dateString = formatter.string(from: self)
Run Code Online (Sandbox Code Playgroud)

结果是我想要的格式,但是当最后一行被执行时,date返回旧的formate

Rak*_*tri 5

你做错了.如果需要显示日期,则使用格式化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)
}
Run Code Online (Sandbox Code Playgroud)


Dun*_*n C 5

你很困惑.一个Date对象不具有的格式.它记录了一个时刻.您必须将其转换为日期字符串以为其提供格式.

你的代码做到了,这很好.但是,您要做的最后一件事是将其转换回a Date,并丢弃您创建的格式化字符串.这是没有意义的.

服务器很可能需要日期字符串.您应该重写函数以返回日期字符串,如Rakesha Shastri的答案.

  • 另请注意,创建日期格式化程序是一项有点昂贵的操作.您的代码每次都会创建一个新的日期格式化程序.最好使函数成为需要它的类的函数,并将DateFormatter保存为惰性实例变量. (3认同)