2015-05-07 95 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似乎做工精細,我覺得你的時間間隔爲只是不是你想要的。