我正在尝试转换字符串:
2018-01-18 13:04:42 +0000
类似
January, 18, 2018
使用DateFormatter
但失败了。我尝试了其他问题(this,this和this)。
这是我打印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)
答案 0 :(得分:1)
您的DateFormatter
期望原始字符串采用January, 18, 2018
格式。您应首先将其转换为Date
,然后仅将其转换为后的其他格式。
此外,在提及普通日历年时,您不应使用YYYY
。 See this question for details.
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*/
答案 1 :(得分:1)
只有当日期字符串的格式与DateFormatter
匹配时,dateFormat
才能将字符串转换为日期 - 在您的示例中不是这种情况。出于这个原因,它正确回复nil
回复。