Я живу в Дании (UTC + 1), и я работаю с webapi, который отправляет мое приложение временную отметку unix с 1970-1-1 00:00:00. Время в будущем (поезд depatures) Если я проверить метку времени в цифрах или Excel дает мне правильное времяВремя Unix с NSDate показывает ошибочные результаты
Чтобы рассчитать количество минут, пока поезд отъездов я делаю так:
let unixTimeTrainDeparture = 1419327780 //(or some time in the future)
let unixRightNow = NSDate().timeIntervalSince1970
let minutesToDeparture = (Int(unixTimeTrainDeparture) - Int(unixRightNow))/60
Однако это дает 60 минут слишком много?
И если я делаю
let dateTest = NSDate(string: "1970-01-01 00:00:00 +0000")!
даст мне 1 января 1970 года: 01: 00: 00 +0000
Это не имеет смысла для меня. Это похоже на timeIntervalSince1970 дает мне 3600 секунд слишком меньше, так как оно начинается с 1970-1-101:00, а не 00:00? Это ошибка, или так оно и должно быть? Я могу исправить время, используя let tz = NSTimeZone.defaultTimeZone() let seconds = tz.secondsFromGMTForDate(NSDate())
, а затем вычитая секунды из моего результата. Однако, что происходит, когда мы двигаемся в летнее время?
Я не имею никакого контроля над WebAPI. Я также предположил, что время API было слишком большим на 3600 секунд, но почему же эта ошибка не появляется в моей таблице, где я делаю 1970-1-1 00:00:00 + ApiTimeStamp. Это должно, на мой взгляд, дать мне такое же смещение, но это не так. – user1700737
Я добавил несколько примеров кода, он предполагает, что время, которое вы получаете от API, всегда находится в датском часовом поясе. – fkarlsson
Привет. Да, это работает (с первого кода, который я представил), но мое беспокойство - это то, что произойдет, когда мы изменим время на летнее время. Мое предположение, что смещение вырастет до 7200. Но большое спасибо за вашу помощь! – user1700737