NSDate Formatter Bug

时间:2016-07-28 17:39:23

标签: swift nsdate nsdateformatter

我有一个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

2 个答案:

答案 0 :(得分:0)

问题不在于timestampDate。问题是releaseDateNSDate?,您试图将stringFromDate的结果放入其中,返回String

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

答案 1 :(得分:0)

当您执行let stringTimeStamp = timestampDate.description时,说明将返回字符串对象。所以基本上 stringTimeStamp 是String类型的对象。所以,当你正在进行releaseDateFormatter.stringFromDate(timestampDate)时,它会收到错误Cannot assign value of type 'String' to type

因为 stringFromDate 实际上将 NSDate 转换为字符串。它期望 String 作为参数。您可能需要 dateFromString ,这会将字符串转换为 NSDate 对象。