I'm currently getting JSON data for a date in this format:
Date = "2016-07-21T18:32:24.347Z"
I need to be able to add an Int, or float that represents minutes (60 min total)
How can I do this?
I'm currently getting JSON data for a date in this format:
Date = "2016-07-21T18:32:24.347Z"
I need to be able to add an Int, or float that represents minutes (60 min total)
How can I do this?
So there are like a million different ways that you could do this but that is probably not what you are looking for here. The best way to play with these things would be in a playground that way you can see how the changes to your code effect the end result.
So first you need a function that can take a string as a parameter.
func dateFromJSON(dateString: String?) -> NSDate? {}
This Function will take in our string and return us a NSDate
Then we need a date formatter, There are many different ways you can format a date and you can check out the documentation on them here NSDateFormatter Documentation
so here is an example of a formatter "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" you can see pretty quickly that different parts refer to differnt peices of a date. IE the yyyy is for the year in this case will give us something like 2016. If it were yy we would only get 16.
Initialize the dateFormatter then apply our format.
You should also throw in some checks to make your code safe. So it should look like this.
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
}
so now we can call
let time = dateFromWebAPIString(date)
print(time) // Jul 21, 2016, 12:32 PM
Now to add time you have to remember that 1 NSTimeInterval is 1 second. So do some basic math
let min = 60
let hr = 60 * min
then we can add as much time as you want
let newTime = time?.dateByAddingTimeInterval(NSTimeInterval(20 * min))
print(newTime) // "Jul 21, 2016, 12:52 PM"
20 min later. Hope this helps