Swift:将普通string转换为YYYY-MM-DDtypesstring?

我需要将一个简单的string转换为DateFormatterstring,以便我可以将它传递给NSDateFormatter.dateFromString.的参数NSDateFormatter.dateFromString. 我有一个string

 let a = "20160114" 

我想把它转换成"2016-01-14"怎么样?

对于只将string转换为给定的格式,你可以使用swift 插入 sunction

 var a = "20160114" a.insert("-", atIndex: a.startIndex.advancedBy(4)) a.insert("-", atIndex: a.startIndex.advancedBy(4+1+2)) print(a) 

打印:“2016-01-14”

  let dateString = "20160114" let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyyMMdd" let dateObj = dateFormatter.dateFromString(dateString) dateFormatter.dateFormat = "yyyy-MM-dd" print("Dateobj: \(dateFormatter.stringFromDate(dateObj!))") 
 let dateformattor = NSDateFormatter() dateformattor.dateFormat = "yyyyMMdd" dateformattor.timeZone = NSTimeZone.localTimeZone() // here just pass your string that you want to convert into date. let dt = "20160114" let dt1 = dateformattor.dateFromString(dt as String) dateformattor.dateFormat = "yyyy-MM-dd" dateformattor.timeZone = NSTimeZone.localTimeZone() print("Time :",dateformattor.stringFromDate(dt1!)) 

输出:

 Time : 2016-01-14 

这在处理date和时间时可能通常不适用,但如果只需要插入破折号(格式保证是相同的),这是更简单的解决scheme

 var str = "20160112" str.characters.insert("-", at: str.index(str.startIndex, offsetBy: 6)) str.characters.insert("-", at: str.index(str.startIndex, offsetBy: 4)) print(str) // outputs "2016-01-12" 
  var str = "20160518" let strCpoy = str str.insert("-", at: strCpoy.index(strCpoy.startIndex, offsetBy: 4)) str.insert("-", at: strCpoy.index(strCpoy.startIndex, offsetBy: 7)) print(str)