2017-05-10 3 views
1

Meine app ruft eine Web-API, die manchmal json Daten in diesem Format zurückgibt:Wie werden zwei mögliche Datumsformate gehandhabt?

"2017-01-18T10:49:00Z" 

und manchmal in diesem Format:

"2017-02-14T19:53:38.1173228Z" 

Ich kann verwenden Sie die folgende Datumsformat die zweite man ein konvertieren Datum Objekt:

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

Aber natürlich funktioniert es nicht für die erste.

Ich habe versucht, Dienstprogramme wie https://github.com/melvitax/DateHelper zu sehen, ob es funktioniert, aber ich habe keine Möglichkeit gefunden, ein JSON-Datum (in einem beliebigen Format) in ein Date-Objekt zu konvertieren.

Irgendwelche Empfehlungen?

+0

Verwenden Sie zwei Formatierer. Sie können beide versuchen und erhalten das erste erfolgreiche Ergebnis oder überprüfen Sie die Länge der Datumszeichenfolge, um eine zu wählen. – Sulthan

Antwort

2

Versuchen Sie beiden Formate:

let parser1 = DateFormatter() 
parser1.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 

let parser2 = DateFormatter() 
parser2.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

func parse(_ dateString: String) -> Date? { 
    let parsers = [parser1, parser2] 

    for parser in parsers { 
     if let result = parser.date(from: dateString) { 
      return result 
     } 
    } 

    return nil 
} 

print(parse("2017-01-18T10:49:00Z")) 
print(parse("2017-02-14T19:53:38.1173228Z")) 

Beachten Sie auch, dass die Z im Format nicht ein wörtlicher Wert ist.

+0

Ich hatte gehofft, dass es eine Lösung für jedes Datumsformat gibt. Dies funktioniert jedoch einwandfrei. Vielen Dank – Primico

Verwandte Themen