2015-05-07 48 views
13

我在SWIFT这样做:NSDate timeIntervalSince1970不能在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中发布的,或者我在这里丢失了什么?

+1

你准确的期望输出什么? – donnywals

+1

到期日有什么? –

回答

28

1432233446145最有可能是在毫秒给定的时间间隔:

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

(即使不立即解释为什么tI在你零的情况下, 它应该帮助本地化的实际问题。 )

+0

时间间隔错误。这是毫秒,所以除以1000.0的伎俩。简单的修复,感谢捕捉。 – zumzum

-3

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

date.isEqual(expirationDate) 

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

+0

代码片段如何实现? – donnywals

+0

时间间隔为零。 – Mundi

+0

你怎么知道的,你不知道到期日期 – donnywals

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似乎做工精细,我觉得你的时间间隔为只是不是你想要的。