如何将字符串日期转换为 NSDate?

How can I convert string date to NSDate?

我想将 2016-03-09 00:00:00 转换为 09/03/2016

我正在尝试下面的代码但是打印 nil

var date: [String] = ["2016-03-09 00:00:00", "2016-03-20 00:00:00"]

for i in date {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd/MM/YYYY"
    let showDate = dateFormatter.dateFromString(i)
    print(showDate)
}

以上代码打印nil
请帮助我如何在 swift

中打印日期 dd/MM/YYYY 格式

我认为你的日期格式有误。将 "dd/MM/YYYY" 更改为 "YYYY-MM-dd HH:mm:s" 并尝试...

You have a date like "2016-03-09 00:00:00" .. so format should be "YYYY-MM-dd HH:mm:s"

for i in date {
  let dateFormatter = NSDateFormatter()
  dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:s"
  if let showDate = dateFormatter.dateFromString(i){
     print("Date with Time: \(showDate)")
     dateFormatter.dateFormat = "YYYY-MM-dd"
     let resultString         = dateFormatter.stringFromDate(showDate)
     print("final result: \(resultString)")  
  }
}  

结果:-

Date with Time: 2016-03-09 00:00:00 +0000
final result: 2016-03-09 
Date with Time: 2016-03-20 00:00:00 +0000
final result: 2016-03-20 

您应该首先创建一个日期格式化程序来处理类型。然后对您的格式进行排序,例如:

let date: [String] = ["2016-03-09 00:00:00", "2016-03-20 00:00:00"]

for i in date {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:s"
    let showDate:NSDate? = dateFormatter.dateFromString(i)

    dateFormatter.dateFormat = "dd/MM/YYYY"
    let date = dateFormatter.stringFromDate(showDate!)
    print(date)

}

在@ElCaptain 的回答中,我建议在循环外创建 2 个,而不是在每次通过循环时重新配置单个日期格式化程序:一个用于从 "YYYY-MM-dd HH:mm:s" 日期字符串转换为 NSDates 的输入日期格式化程序,以及一个用于将 NSDates 转换为 "YYYY-MM-dd" 格式的输出格式化程序。

let inputFormatter = NSDateFormatter()
inputFormatter.dateFormat = "YYYY-MM-dd HH:mm:s"
let outputFormatter = NSDateFormatter()
ourputFormatter.dateFormat = "YYYY-MM-dd"

for i in date {
  if let showDate = inputFormatter.dateFromString(i) {
     print("Date with Time: \(showDate)")
     let resultString = outputFormatter.stringFromDate(showDate)
     print("final result: \(resultString)")  
  }
}