NSDate 格式化程序错误

NSDate Formatter Bug

我有一个 Unix 时间戳,我正尝试使用 NSDateFormatter() 进行转换,但是当我尝试传递我的 NSDate 变量时,出现错误:Cannot assign value of type 'String' to type 'NSDate?'

var releaseDate: NSDate?

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let seconds = Double(self.userA.releaseDate)

    let timestampDate = NSDate(timeIntervalSince1970: seconds)

    let stringTimeStamp = timestampDate.description

    print(stringTimeStamp) // 2016-07-29 04:49:54 +0000

    let releaseDateFormatter = NSDateFormatter()
    releaseDateFormatter.dateFormat = "hh:mm:ss a"
    releaseDate = releaseDateFormatter.stringFromDate(timestampDate)
}

我很困惑,因为我没有明确声明 timestampDateNSDate 吗?

问题不在于 timestampDate。问题是 releaseDate 是一个 NSDate? 并且您试图将 stringFromDate 的结果放入其中,returns 一个 String.

如果要将时间戳转换为用户可读的字符串,您可能希望将 releaseDate 声明为 String

当您执行 let stringTimeStamp = timestampDate.description 时,description 将 return 一个 String 对象。所以基本上 stringTimeStamp 是一个 String 类型的对象。所以最后当你在做 releaseDateFormatter.stringFromDate(timestampDate) 时,它得到了错误 Cannot assign value of type 'String' to type

因为 stringFromDate 实际上将 NSDate 转换为 String。它需要一个 String 作为参数。您可能需要 dateFromString,它将 String 转换为 NSDate 对象。