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
1432233446145
скорее всего, интервал времени в миллисекундах:
let date = NSDate(timeIntervalSince1970: 1432233446145.0/1000.0)
print("date is \(date)")
// date is 2015-05-21 18:37:26 +0000
Свифт 3 и позже:
let date = Date(timeIntervalSince1970: 1432233446145.0/1000.0)
Ответ 2
Я думаю, что ваша временная метка неверна. Это приведет к тому, что ваша дата будет 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"
И для полноты я также проверил с датой истечения, которая на 1100 секунд больше первоначальной date
:
let expirationDate = NSDate(timeIntervalSince1970: 1431025588)
let diff = expirationDate.timeIntervalSinceDate(date)
println("expires in: \(diff)")
// "expires in: 1100.0"
Итак, timeIntervalSince1970, похоже, работает нормально, я думаю, что ваш интервал был не таким, каким вы хотели.
Ответ 3
Из вашего кода и содержимого журнала следует:
date.isEqual(expirationDate)
- > Ваш материал только что истек: -).