从Apple 文档的此页面NSDateFormatter
中,您可以看到遵循Unicode Technical Standard,并且从那里您可以看到指定 unix 时间不是一个选项。
因此,您必须拆分字符串,将数字转换为 NSTimeInterval,然后将其读入 NSDate。
http://unixtimestamp.com对调试非常有帮助。您会注意到1344433014807 实际上是毫秒。
这是一个 Swift 实现,因为我最终不得不自己编写它,希望它能正常工作:)
public func dateFromBlaString(string: String) -> NSDate? {
if let rangeOfDate = string.rangeOfString("^/Bla\\(", options: .RegularExpressionSearch, range: nil, locale: nil)
where count(string) >= count("/Bla(") { // avoid out of range error
let startIndex = advance(string.startIndex, count("/Bla(")
let suffix = string.substringFromIndex(startIndex) // "1344433014807)/"
if let parenthesisRange = suffix.rangeOfString(")", options: .LiteralSearch, range: nil, locale: nil) {
let parenthesisIndex = parenthesisRange.startIndex
let unixTimeInMillisecondsString = suffix.substringToIndex(parenthesisIndex) // "1344433014807"
if let unixTimeInMillisecondsDouble = NSNumberFormatter().numberFromString(unixTimeInMillisecondsString)?.doubleValue { // 1344433014807.0
let unixTime = NSTimeInterval(unixTimeInMillisecondsInt) / 1000
return NSDate(timeIntervalSince1970: unixTime)
}
}
}
return nil
}