Swift DateFormatter 在将字符串转换为日期时返回 nil

May*_*sam 3 nsdateformatter swift

我正在尝试转换字符串:

2018-01-18 13:04:42 +0000

类似的东西

January, 18, 2018

使用DateFormatter但失败。我尝试过其他问题(这个这个这个)。

这是我的简单代码,打印nil

let str = "2018-01-18 13:04:42 +0000" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "MMMM, dd, YYYY" 
dateFormatter.locale = Locale.current 
let mydate = dateFormatter.date(from: str) 
print(mydate)
Run Code Online (Sandbox Code Playgroud)

Tam*_*gel 6

DateFormatter期望原始字符串采用以下January, 18, 2018格式。您应该先将其转换为一种格式,然后Date再将其转换为另一种格式。

YYYY另外,在指代普通日历年时不应使用。有关详细信息,请参阅此问题。

let str = "2018-01-18 13:04:42 +0000" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") 

guard let date = dateFormatter.date(from: str) else {
    return
}

let newDateFormatter = DateFormatter() 
newDateFormatter.dateFormat = "MMMM, dd, yyyy" 
let newStr = newDateFormatter.string(from: date)
print(newStr) /*January, 18, 2018*/
Run Code Online (Sandbox Code Playgroud)