Итак, существует миллион различных способов, которыми вы могли бы это сделать, но это, вероятно, не то, что вы ищете здесь. Лучший способ играть с этими вещами будет на игровой площадке таким образом, чтобы вы могли видеть, как изменения вашего кода влияют на конечный результат.
Итак, сначала вам нужна функция, которая может принимать строку в качестве параметра.
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 мин позже. Надеюсь, это поможет
Просто конвертируйте свою строку на сегодняшний день и используйте метод calendar dateByAddingUnit, чтобы добавить к ней минуты. –
Я никогда раньше этого не делал, как вы это делаете? – SwiftyJD
http://stackoverflow.com/a/30269467/2303865 –