如何快速转换日期yyyy-mm-dd'T'HH:mm:ss.SSSZ

时间:2018-09-11 11:41:51

标签: ios iphone swift xcode dateformatter

我要将日期从“ yyyy-mm-dd'T'HH:mm:ss.SSSZ” 转换为“ dd-mm-yyyy” 和我的日期是“ 2018-09-11T09:53:25.000 + 0000” ,这是我的代码

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-mm-dd'T'HH:mm:ss.SSSZ"

let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")

dateFormatter.dateFormat = "dd-mm-yyyy"

if(dateFromInputString != nil){
   return dateFormatter.string(from: dateFromInputString!)
}
else{
   debugPrint("could not convert date")
   return "N/A"
}

但是我要转换的日期为 2018年11月23日

但是我的方面是 2018年11月9日

6 个答案:

答案 0 :(得分:3)

您的dateFormat 错误。当您在 几个月和几分钟内都使用'mm'时,格式上的歧义应该很清楚。

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

mm-分钟

MM-几个月

第二个日期格式也是如此。


有关日期格式的更多信息,请参见this

答案 1 :(得分:2)

尝试

 func GetFormatedDate(date_string:String,dateFormat:String)-> String{

    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = dateFormat

    let dateFromInputString = dateFormatter.date(from: date_string)
    dateFormatter.dateFormat = "dd-MM-yyyy" // Here you can use any dateformate for output date
    if(dateFromInputString != nil){
        return dateFormatter.string(from: dateFromInputString!)
    }
    else{
        debugPrint("could not convert date")
        return "N/A"
    }
}

像这样使用:

self.GetFormatedDate(date_string: "2018-09-11T09:53:25.000+0000", dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ")

输出:

11-09-2018

答案 2 :(得分:1)

应该是

dateFormatter.dateFormat = "dd-MM-yyyy"

尝试

答案 3 :(得分:1)

您的dateFormater错误,应该是yyyy-MM-dd'T'HH:mm:ss.SSSZ而不是yyyy-mm-dd'T'HH:mm:ss.SSSZ

dateFormatter.dateFormat = "dd-mm-yyyy"

dateFormatter.dateFormat = "dd-MM-yyyy"

答案 4 :(得分:1)

尝试一下:

   extension String {

        func convertDate() -> String {
            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

            if let dateInLocal = dateFormatter.date(from: self) {
                dateFormatter.dateFormat = "dd-MM-yyyy"
                return dateFormatter.string(from: dateInLocal)
            }
            return "NA"
        }

    }

答案 5 :(得分:0)

let dateFormatter = DateFormatter()
 dateFormatter.locale = Locale(identifier: "en_US_POSIX")
 dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

 let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")

 dateFormatter.dateFormat = "dd-MM-yyyy"

 if(dateFromInputString != nil){
     return dateFormatter.string(from: dateFromInputString!)
 }
 else{
     debugPrint("could not convert date")
     return "N/A"
 }