【发布时间】:2019-07-13 07:18:57
【问题描述】:
我正在尝试使用静态日期格式化程序将我的字符串转换为日期。当我使用下面的变量调用stringToDate() 时,会返回一个nil 值。
我查看过以前有关此问题的帖子,人们说这是因为日期格式化程序locale 或timeZone。但是,在这种情况下,这似乎不是问题。
有谁知道在这种情况下可能出现什么问题?我的代码如下:
import Foundation
class DateHelper {
private static let dateFormatter: DateFormatter = {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd hh:mm:ss"
df.locale = Locale(identifier: "en_GB")
df.timeZone = TimeZone.current
return df
}()
static func stringToDate(str: String, with dateFormat: String) -> Date? {
dateFormatter.dateFormat = dateFormat
let date = dateFormatter.date(from: str)
return date
}
}
var myDate = Date()
var dateStr = "2019-02-19T17:10:08+0000"
print(DateHelper.stringToDate(str: dateStr, with: "MMM d yyyy")) // prints nil
【问题讨论】:
-
不要更改共享
dateFormatter实例的dateFormat。你只是自找麻烦。 -
更不用说您的代码中的所有日期格式都不匹配字符串
"2019-02-19T17:10:08+0000"。 -
2019-02-19T17:10:08+0000 和 yyyy-MM-dd hh:mm:ss 格式不匹配。请搜索解决方案。有很多可用的解决方案。
标签: swift date timezone nsdate nsdateformatter