2016-07-27 46 views
0

Ich erhalte derzeit JSON-Daten für ein Datum in diesem Format:Wie füge ich einen Int zu einem NSDate hinzu?

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

Ich muss in der Lage, ein Int oder Float hinzuzufügen, die Minuten (60 min gesamt)

Wie kann ich repräsentiert mach das?

+1

einfach Ihr Zeichenfolge Datum und Verwendung Kalender-Methode dateByAddingUnit konvertieren Minuten, um es hinzuzufügen. –

+0

Das habe ich noch nie gemacht, wie machst du das? – SwiftyJD

+0

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

Antwort

0

So gibt es wie eine Million verschiedene Möglichkeiten, wie Sie dies tun können, aber das ist wahrscheinlich nicht das, was Sie hier suchen. Der beste Weg, mit diesen Dingen zu spielen, wäre ein Spielplatz, auf dem Sie sehen können, wie die Änderungen an Ihrem Code das Endergebnis beeinflussen.

Also zuerst müssen Sie eine Funktion, die einen String als Parameter nehmen.

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

wird diese Funktion in unserem string nehmen und bringen Sie uns eine NSDate

Dann brauchen wir ein Datum Formatierer, gibt es viele verschiedene Möglichkeiten, wie Sie ein Datum formatieren können, und Sie können hier auf sie in der Dokumentation überprüfen NSDateFormatter Documentation

so hier ist ein Beispiel für einen Formatierer "yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" Sie können ziemlich schnell sehen, dass verschiedene Teile auf verschiedene Arten eines Datums beziehen. IE die yyyy ist für das Jahr in diesem Fall wird uns etwas wie 2016 geben. Wenn es yy wäre, würden wir nur 16 bekommen.

initialisieren dateFormatter dann unser Format anwenden.

Sie auch in einigen Prüfungen werfen sollten Ihren Code sicherer zu machen. Also sollte es so aussehen.

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 
} 

jetzt so können wir

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

Jetzt Zeit, die Sie dürfen nicht vergessen, hinzuzufügen, dass 1 NSTimeInterval 1 Sekunde. So haben einige grundlegende mathematische

let min = 60 
let hr = 60 * min 

dann können wir so viel Zeit hinzufügen, wie Sie wollen

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

20 min später. Hoffe, das hilft

+0

Dies war sehr informativ, besser als alles, was ich online gefunden habe, danke für Ihre Hilfe! – SwiftyJD

+0

Ich habe es eine Tonne gemacht und muss es immer noch nachschlagen. Ich bin froh, dass es hilfreich war. –