DateFormatter无法在Swift中使用小时和分秒



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"(

此代码中存在许多问题

  1. "" … ""是无效语法
  2. 未定义任何参数类型
  3. 不返回任何内容,甚至不返回错误的类型
  4. 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)