Getting nil将日期字符串转换为日期
func convertDateFormater(dateStr: ""2022-10-22T22:22:16:2216Z"") -> String? {
let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let strSelected = inputFormatter.date(from: dateStr)
}
convertDateFormater(dateStr: "2022-10-23T00:00:00.000Z") // Working fine
***convertDateFormater(dateStr: ""2022-10-22T22:22:16:2216Z"") // Not Working fine getting nil***
应该工作convertDateFormater(dateStr:"2022-10-22T22:22:16:2216Z"(
此代码中存在许多问题
"" … ""
是无效语法- 未定义任何参数类型
- 不返回任何内容,甚至不返回错误的类型
Z
是格式说明符,不能用单引号括起来
除此之外,请查看您的日期字符串。介于秒和毫秒之间的冒号非常罕见,但它适用于此代码
func convertDateFormater(dateStr: String) -> Date? {
let inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss:SSSZ"
return inputFormatter.date(from: dateStr)
}
convertDateFormater(dateStr: "2022-10-22T22:22:16:2216Z")
但是不能同时转换具有相同日期格式的字符串(冒号和句点分隔符(。
为此,您需要第二个参数
func convertDateFormater(dateStr: String, hasColonMillisecondSeparator: Bool = false) -> Date? {
let inputFormatter = DateFormatter()
inputFormatter.dateFormat = hasColonMillisecondSeparator ? "yyyy-MM-dd'T'HH:mm:ss:SSSZ" : "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
return inputFormatter.date(from: dateStr)
}
convertDateFormater(dateStr: "2022-10-23T00:00:00.000Z")
convertDateFormater(dateStr: "2022-10-22T22:22:16:2216Z", hasColonMillisecondSeparator: true)