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 的建议修复了这个问题
我正在尝试使用以下代码
解析 "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 的建议修复了这个问题