我正在努力寻找一种从字符串中解析NSDate的方法,如果出错,它会崩溃应用程序。
例如,以下日期会导致崩溃:星期三,2014年3月12日17:13:54 +00000 \ n \ t \ t \ t \ t \
我目前正在使用以下代码:
let trimmed = unformatedDate.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "E, dd MMM yyyy HH:mm:ss zzzz"
if let tempDate = dateFormatter.dateFromString(trimmed) {
print(tempDate)
} else { print("We have an error with the tempCreatedDate") }
有什么建议吗?
答案 0 :(得分:0)
这不应该导致崩溃。相反,dateFromString
方法返回一个可选项,如果输入字符串与指定的日期格式不匹配,则为nil
。正如您所做的那样,您需要针对该案例进行防御性编码。
如果您强制解包生成的可选项,那么崩溃的地方就是。您正在使用可选绑定,这是处理它的好方法。
答案 1 :(得分:0)
您的问题是您的日期格式"dd/MM/yyyy HH:MM:SS"
与日期字符串"Tue, 12 Jul 2011 20:18:26 GMT"
不匹配。您需要使用不同的日期格式。
答案 2 :(得分:0)
试试这段代码:
func nsDateFromString(myDate:String)-> NSDate{
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" //format style. Browse online to get a format that fits your needs.
let dateString = dateFormatter.dateFromString(myDate)
return dateString!
}