NSDateFormatter 不适用于月份

NSDateFormatter does not work with the months

我正在操作 Date/String 类型的变量,但遇到了问题。

我在输入中收到一个具有这种格式 (2015-08-24) 的字符串日期,我希望在输出中将这种日期格式(星期六,1 月 25 日)作为字符串输出。

我有这个功能:

    private func dateFormatter(s : String) -> String{
       let dateFormatter = NSDateFormatter()
       dateFormatter.dateFormat = "YYYY-MM-DD"
       var date = dateFormatter.dateFromString(s)!

       var newDateFormat = NSDateFormatter()
       newDateFormat.dateFormat = "EEE, DD MMM"
       return newDateFormat.stringFromDate(date)
    }

正在执行:

var d = dateFormatter("2015-08-24")
println(d) //Sat, 24 Jan

不知道是什么月份,搞错了

显示每一步时:

private func dateFormatter(s : String) -> String{
       println(s)  //2015-08-24
       let dateFormatter = NSDateFormatter()
       dateFormatter.dateFormat = "YYYY-MM-DD"
       var date = dateFormatter.dateFromString(s)!
       println(date)   //2015-01-23 23:00:00 +0000 //Why day 23 whereas it is 24 in input?

       var newDateFormat = NSDateFormatter()
       newDateFormat.dateFormat = "EEE, DD MMM"
       return newDateFormat.stringFromDate(date) //Sat, 24 Jan
    }

感谢您的帮助

您弄乱了格式字符串。这将起作用:

private func dateFormatter(s : String) -> String{
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let date = dateFormatter.dateFromString(s)!

    let newDateFormat = NSDateFormatter()
    newDateFormat.dateFormat = "EEE, dd MMM"
    return newDateFormat.stringFromDate(date)
}

此外,您不应该每次都创建 NSDateFormatter 对象。创建一个实例,将其存储在某处并在需要时使用它。