如何在 Swift4 上将日期格式化为特定格式?

Aug*_*sto -1 date nsdateformatter ios swift

我必须将创建的对象格式化为Date()特定格式,此格式必须显示如下日期:

28 may, 2018 11:00:32

我有一个 func 来格式化Date(),但要遵循以下格式:

yyyy-MM-dd HH:mm:ss

功能工作:

static func dateFormatTime(date : Date) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dateFormatter.string(from: date)
    }
Run Code Online (Sandbox Code Playgroud)

但我不知道如何制作这种格式: dd MMM, yyyy HH:mm:ss

Ahm*_*d F 9

简单地说,您所要做的就是将dateFormatter.dateFormat值更改为所需的格式,在您的情况下为“dd MMM, yyyy hh:mm:ss”

func dateFormatTime(date : Date) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MMM, yyyy hh:mm:ss"
    return dateFormatter.string(from: date)
}
Run Code Online (Sandbox Code Playgroud)

所以:

let str = dateFormatTime(date: Date())
print(str) // 29 May, 2018 12:18:08
Run Code Online (Sandbox Code Playgroud)

时区:

您还可以像这样设置所需的时区:

dateFormatter.timeZone = TimeZone(identifier: "UTC")
Run Code Online (Sandbox Code Playgroud)

更新:

感谢@rmaddy建议使用日期样式(dateStyletimeStyle属性)而不是编辑日期格式。

向用户显示日期时,您可以 根据您的特定需要设置日期格式化程序的dateStyletimeStyle属性...基于dateStyletimeStyle属性的值,DateFormatter提供适用于给定语言环境的指定日期的表示。

DateFormatter - 使用用户可见的日期和时间表示。

因此:

func dateFormatTime(date : Date) -> String {
    let dateFormatter = DateFormatter()
    
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .medium
    
    dateFormatter.timeZone = TimeZone(identifier: "UTC")
 
    return dateFormatter.string(from: date)
}

let str = dateFormatTime(date: Date())
print(str) // May 29, 2018 at 12:45:08 AM
Run Code Online (Sandbox Code Playgroud)