我正在尝试转换字符串:
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)
您的
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*/
DateFormatter
匹配时,
dateFormat
才能将字符串转换为日期,但示例中并非如此。因此,它会正确响应
nil
回复。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss";
dateFormatter.timeZone = TimeZone.current;
dateFormatter.dateStyle = .none;
dateFormatter.timeStyle = .none;
let date = dateFormatter.date(from: "2023-08-03 00:00:00")
这个日期为零,为什么?
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .none
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.timeZone = TimeZone.current
let date = dateFormatter.date(from: "2023-08-03 00:00:00")
这个日期是正确的