NSDateFormatter不适用于这几个月

时间:2015-09-15 16:06:06

标签: swift nsdate nsdateformatter

我正在操作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
    }

感谢您的帮助

Ysee

1 个答案:

答案 0 :(得分:2)

你搞砸了格式字符串。这将有效:

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个对象。创建一个实例,将其存储在某个地方并在需要时使用它。