NSDateFormatter 在 iOS 7 上失败,适用于更高版本

NSDateFormatter fails on iOS 7, works on later versions

我正在尝试使用以下代码

解析 "ddMMyy-HH:mm:ss" 格式的字符串
static func parseDate(var date: String?) -> NSDate?{
        if(date == nil){
            return nil
        }
        print("PARSING \(date)")
        let formatter = NSDateFormatter()
        formatter.dateFormat = "ddMMyy-HH:mm:ss"
        let res = formatter.dateFromString(date!)
        print("RESULT \(res)")
        return res
    }

res 的值最后为 nil,即使 date 不为 nil。然后我尝试使用

删除 : 和 - 符号
  date = date!.stringByReplacingOccurrencesOfString(":", withString: "")
  date = date!.stringByReplacingOccurrencesOfString("-", withString: "")

然后更改我的格式以反映这一点

formatter.dateFormat = "ddMMyyHHmmss"

现在的控制台输出是

TIME IS 291015-12:10:12
PARSING Optional("291015121012")
RESULT nil

我也尝试添加行

formatter.locale = NSLocale.currentLocale()

奇怪的是,该应用程序在 iOS 9 上运行良好,我认为它在 8 上也运行良好。

原来问题与 iOS 无关,这是因为我的 ios7 设备恰好在设备设置中处于 12 小时模式。这使格式化程序感到困惑。使用

    formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

按照@WiliamKinaan 的建议修复了这个问题