NSDate timeIntervalSince1970不在Swift工作?

时间:2015-05-07 18:42:57

标签: swift nsdate

我在swift中这样做:

let date = NSDate(timeIntervalSince1970: 1432233446145.0)
println("date is \(date)")

日志给了我这个:

 date is 47355-09-02 23:55:45 +0000

然后我试着让间隔退出来进行测试:

let tI = expirationDate.timeIntervalSinceDate(date)
println("tI = \(tI)")

我明白了:

tI = 0.0

我做错了什么? 我似乎可以使timeIntervalSince1970调用正常工作。在Swift中是否有任何已知的发布,或者我在这里遗漏了什么?

3 个答案:

答案 0 :(得分:35)

1432233446145最有可能是毫秒中给出的时间间隔:

let date = NSDate(timeIntervalSince1970: 1432233446145.0/1000.0)
print("date is \(date)")
// date is 2015-05-21 18:37:26 +0000

Swift 3及更高版本:

let date = Date(timeIntervalSince1970: 1432233446145.0/1000.0)

答案 1 :(得分:3)

我认为您的时间戳不正确。这导致您的日期是9月2日,47355。

如果我使用以下内容,我现在就获得(右)的日期:

let date = NSDate(timeIntervalSince1970: 1431024488)
println("date is \(date)")
// "date is 2015-05-07 18:48:08 +0000"

打印日期不是本地化的时间戳,所以我想你必须做一些你自己的本地化。一个例子:

let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
println("formatted date is \(formatter.stringFromDate(date))")
// "formatted date is 07-05-2015 20:48:08"

为了完整起见,我还检查了一个过期日期比初始date大1100秒:

let expirationDate = NSDate(timeIntervalSince1970: 1431025588)
let diff = expirationDate.timeIntervalSinceDate(date)
println("expires in: \(diff)")
// "expires in: 1100.0"

所以,timeIntervalSince1970似乎工作正常,我认为你的间隔不是你想要的。

答案 2 :(得分:-4)

从您的代码和日志内容如下:

date.isEqual(expirationDate)

- >你的东西刚过期了: - )。