日期格式化程序不工作Swift带有小时和分钟秒

h6my8fg2  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(127)

获取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(日期字符串:““2022年10月22日星期二:22:16:2216Z””)

dbf7pr2w

dbf7pr2w1#

此代码中存在许多问题

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

相关问题