Dateformatter 返回 nil
Dateformatter returning nil
下面的函数在 playground 中有效,但是当我 运行 它出于某种原因在我的应用程序中时 date
和 fDate
returns 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 操场上不起作用。它在尝试解包 date
时崩溃,因为 "2025-12-18T01:30:00Z"
与 NSDateFormatter
使用的默认格式不匹配,因此 dateFromString
returns 为零。道德:不要相信 IBM Swift 沙盒的行为与 iOS 或 OS X.
完全一样
此外,由于 APIformatDate
没有引用 self
,它应该是 class
或 static
方法,或者 String
上的方法,因此您不必为了调用它而创建 NSDate
对象。
另外2,创建一个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
}()
}
下面的函数在 playground 中有效,但是当我 运行 它出于某种原因在我的应用程序中时 date
和 fDate
returns 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 操场上不起作用。它在尝试解包 date
时崩溃,因为 "2025-12-18T01:30:00Z"
与 NSDateFormatter
使用的默认格式不匹配,因此 dateFromString
returns 为零。道德:不要相信 IBM Swift 沙盒的行为与 iOS 或 OS X.
此外,由于 APIformatDate
没有引用 self
,它应该是 class
或 static
方法,或者 String
上的方法,因此您不必为了调用它而创建 NSDate
对象。
另外2,创建一个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
}()
}