Ios 返回零的日期格式化程序

Ios 返回零的日期格式化程序,ios,swift,nsdate,nsdateformatter,Ios,Swift,Nsdate,Nsdateformatter,下面的函数在游乐场中工作,但当我出于某种原因在我的应用程序中运行它时,date和fDate返回nil。这里有我遗漏的东西吗 extension NSDate{ func APIformatDate(dateString: String)->String{ p let dateFormatter = NSDateFormatter() let date = dateFormatter.dateFromString(dateString) dat

下面的函数在游乐场中工作,但当我出于某种原因在我的应用程序中运行它时,
date
fDate
返回
nil
。这里有我遗漏的东西吗

extension NSDate{
 func APIformatDate(dateString: String)->String{
     p   let dateFormatter = NSDateFormatter()
        let date = dateFormatter.dateFromString(dateString)
        dateFormatter.dateFormat = "dd-MMM"
        let fDate = dateFormatter.stringFromDate(date!)
        return fDate
    }

}
let a = NSDate().APIformatDate("2025-12-18T01:30:00Z")

在操场上工作=

对我来说,它在Xcode 7.3.1下的iOS操场上不工作。由于
“2025-12-18T01:30:00Z”
NSDateFormatter
使用的默认格式不匹配,因此
dateFromString
返回零,因此尝试展开
日期时崩溃。寓意:不要相信IBMSwift沙盒的行为与iOS或OSX完全一样

另外,由于
APIformatDate
不引用
self
,因此它应该是
静态
方法,或者是
字符串
上的方法,因此您不必创建一个
NSDate
对象来调用它

另外,创建一个
NSDateFormatter
非常昂贵,因此,如果要经常调用此函数,应该为每种格式创建一个格式化程序,并保留它们

extension NSDate {

    static func apiFormatted(iso8601String string: String) -> String {
        return apiFormatter.stringFromDate(iso8601Formatter.dateFromString(string)!)
    }

    private static let iso8601Formatter: NSDateFormatter = {
        let formatter = NSDateFormatter()
        formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
        return formatter
    }()

    private static let apiFormatter: NSDateFormatter = {
        let parser = NSDateFormatter()
        parser.dateFormat = "dd-MMM"
        return parser
    }()

}

在调用
dateFromString
之前,首先指定输入的
dateFormat
。你把输入放在2025年12月18日,输出是1月1日,它肯定不起作用。“寓意:不要相信IBMSwift沙盒的行为完全像iOS或OSX。”对。IBMSwift沙盒基于Swift for Linux,目前它的操作方式与iOS/OSX不同。