Я пытаюсь сделать простое сравнение дат с целью перехода к другому индексу массива в зависимости от дня.
Хотя это намного эффективнее, чем код, который я использовал, следующее (Невозможно проанализировать дату) не сохраняет смещение часового пояса:
let noaaDate = "2014-08-22T15:00:00-04:00"
let format="yyyy-MM-dd'T'HH:mm:ssZ"
var dateFmt = NSDateFormatter()
dateFmt.dateFormat = format
let newreadableDate = dateFmt.dateFromString(noaaDate)
println(newreadableDate)
Выход:
Optional(2014-08-22 19:00:00 +0000)
Когда я добавляю следующее:
dateFmt.timeZone = NSTimeZone.localTimeZone() // I've even tried defaultTimeZone
выход тот же. Где это, кажется, становится проблемой позже, когда я делаю следующее:
// FYI: parseNOAADateTime is that code above
var earliestTimeNS = parseNOAADateTime(earliestTime!)
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitDay, fromDate: earliestTimeNS)
let dayZero = components.day
// stuff, like starting a loop
let tempDateTimeString = "2014-08-31T01:00:00-04:00"
let thisDateTime = parseNOAADateTime(tempDateTimeString!)
let tempDateTimeComponents = calendar.components(.CalendarUnitDay, fromDate: thisDateTime)
let forecastIndex = tempDateTimeComponents.day - dayZero
Теперь прогнозный индекс ДОЛЖЕН быть равен 6, потому что tempDateTimeComponents.day ДОЛЖЕН быть равен 31. Однако они равны 5 и 30 соответственно, что означает, что данные за четыре часа заканчиваются данными за предыдущий день.
Где я ошибаюсь?
Спасибо