Je fais ça dans Swift:
let date = NSDate(timeIntervalSince1970: 1432233446145.0)
println("date is \(date)")
Le journal me donne ceci:
date is 47355-09-02 23:55:45 +0000
Ensuite, j'essaie de récupérer un intervalle juste pour le test:
let tI = expirationDate.timeIntervalSinceDate(date)
println("tI = \(tI)")
Je reçois:
tI = 0,0
Qu'est-ce que je fais mal? Je peux sembler faire fonctionner correctement l'appel timeIntervalSince1970. Y a-t-il des informations connues à ce sujet dans Swift, ou ai-je oublié quelque chose ici?
1432233446145
est très probablement un intervalle de temps donné en millisecondes :
let date = NSDate(timeIntervalSince1970: 1432233446145.0/1000.0)
print("date is \(date)")
// date is 2015-05-21 18:37:26 +0000
Swift 3 et versions ultérieures:
let date = Date(timeIntervalSince1970: 1432233446145.0/1000.0)
Je pense que votre horodatage est incorrect. Il en résulte que votre date est le 2 septembre 47355.
Si j'utilise ce qui suit, j'obtiens la date de (à peu près) maintenant:
let date = NSDate(timeIntervalSince1970: 1431024488)
println("date is \(date)")
// "date is 2015-05-07 18:48:08 +0000"
La date imprimée n'est pas un horodatage localisé, vous devrez donc faire votre propre localisation, je suppose. Un exemple:
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"
Et pour être complet, j'ai également vérifié avec une date d'expiration qui est 1100 secondes plus grande que la date
initiale:
let expirationDate = NSDate(timeIntervalSince1970: 1431025588)
let diff = expirationDate.timeIntervalSinceDate(date)
println("expires in: \(diff)")
// "expires in: 1100.0"
Donc, le timeIntervalSince1970 semble bien fonctionner, je pense que votre intervalle n'était tout simplement pas ce que vous vouliez qu'il soit.