2016-07-27 2 views
0

настоящее время я получаю данные в формате JSON на сегодняшний день в этом формате:Как добавить Int в NSDate?

Date = "2016-07-21T18:32:24.347Z" 

Мне нужно, чтобы иметь возможность добавить Int, или поплавок, который представляет минут (60 мин всего)

Как я могу сделай это?

+1

Просто конвертируйте свою строку на сегодняшний день и используйте метод calendar dateByAddingUnit, чтобы добавить к ней минуты. –

+0

Я никогда раньше этого не делал, как вы это делаете? – SwiftyJD

+0

http://stackoverflow.com/a/30269467/2303865 –

ответ

0

Итак, существует миллион различных способов, которыми вы могли бы это сделать, но это, вероятно, не то, что вы ищете здесь. Лучший способ играть с этими вещами будет на игровой площадке таким образом, чтобы вы могли видеть, как изменения вашего кода влияют на конечный результат.

Итак, сначала вам нужна функция, которая может принимать строку в качестве параметра.

func dateFromJSON(dateString: String?) -> NSDate? {} 

Эта функция будет принимать в нашем string и вернуть нам NSDate

Затем нам нужно форматирование даты, Есть много различных способов, вы можете отформатировать дату, и вы можете проверить документацию на них здесь NSDateFormatter Documentation

так вот пример форматирования "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" вы можете увидеть довольно быстро, что разные части относятся к разным точкам даты. IE yyyy за год в этом случае даст нам что-то вроде 2016. Если бы это было yy, мы бы получили только 16.

Инициализировать dateFormatter, а затем применить наш формат.

Вы также должны сделать несколько проверок, чтобы сделать ваш код безопасным. Так должно выглядеть так.

func dateFromWebJSON(dateString: String?) -> NSDate? { 
    guard let dateString = dateString else { 
    return nil 
    } 
    let formatter = NSDateFormatter() 
    let date = ["yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"].flatMap { (dateFormat: String) -> NSDate? in 
    formatter.dateFormat = dateFormat 
    return formatter.dateFromString(dateString) 
    }.first 

    assert(date != nil, "Failed to convert date") 
    return date 
} 

так что теперь мы можем назвать

let time = dateFromWebAPIString(date) 
print(time) // Jul 21, 2016, 12:32 PM 

Теперь, чтобы добавить время вы должны помнить, что 1 NSTimeInterval 1 секунда. Так что некоторые основные математические

let min = 60 
let hr = 60 * min 

, то мы можем добавить столько времени, сколько вы хотите

let newTime = time?.dateByAddingTimeInterval(NSTimeInterval(20 * min)) 
print(newTime) // "Jul 21, 2016, 12:52 PM" 

20 мин позже. Надеюсь, это поможет

+0

Это было очень информативно, лучше всего, что я нашел в Интернете, спасибо за вашу помощь! – SwiftyJD

+0

Я сделал это тонну и все равно должен искать это время от времени. Я рад, что это было полезно. –

 Смежные вопросы

  • Нет связанных вопросов^_^