在 Swift 中将字符串转换为 NSDate

Converting a string to NSDate in Swift

我在 Swift 中将字符串转换为 NSDate 时遇到问题。我的日期字符串采用以下格式:

2016-05-06T14:07:23.430Z

我有一个函数可以 return 格式化日期字符串,如下所示,传递到函数中的日期字符串的格式如上所示:

private func formatDate(theDate:String?) -> String {
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "MM-dd-yy H:mm"
    let actualDate = dateFormatter.dateFromString(theDate!) //always produces nil
    let formattedDate = dateFormatter.stringFromDate(actualDate!)
    return formattedDate
}

当尝试从传递给函数的字符串中获取日期对象时,日期对象始终为 nil。任何人都可以协助解决这个问题吗?谢谢!

您使用了错误的日期格式。您不应该对输入日期和输出日期使用相同的 NSDateFormatter

试试这个:yyyy-dd-MM'T'HH:mm:ss.SSS'Z' 作为您的输入。这是一个完全有效的解决方案:

func formatDate(theDate: String?) -> String {

    let inputDateFormatter = NSDateFormatter()
    inputDateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z'"
    let outputDateFormatter = NSDateFormatter()
    outputDateFormatter.dateFormat = "MM-dd-yy H:mm"

    let actualDate = inputDateFormatter.dateFromString(theDate!)
    let formattedDate = outputDateFormatter.stringFromDate(actualDate!)
    return formattedDate
}

formatDate("2016-05-06T14:07:23.430Z") // returns 06-05-16 14:07
let strDate = "2016-05-06T14:07:23.430Z"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
let date = dateFormatter.dateFromString(strDate)

看到这个答案:

let myDateString = "2016-05-06T14:07:23.430Z"

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-dd-MM'T'HH:mm:ss.SSS'Z"
let dateFromString = dateFormatter.dateFromString(myDateString)

let dateFormatter1  = NSDateFormatter()
dateFormatter1.dateFormat = "MM-dd-yy H:mm"
let getDate =  dateFormatter1.stringFromDate(dateFromString!)

print(getDate)

你的输出: