2017-06-08 1 views
1

Ich habe ein Date-Objekt konvertieren, etwa so:ein Datum zu einem (nicht für Menschen lesbare) string in Swift 3

:

2017-06-08 08:36:16 +0000 

ich dies in dieser Form in einen String müssen konvertieren

"2017-06-08T08:36:16Z" 

Die REST api Ich poste, um nur Daten als Zeichenfolgen zu akzeptieren.

Bei den meisten Informationen, die ich online finde, handelt es sich um die Konvertierung von Datumsangaben in für Menschen lesbare Formate. Wenn möglich, könnte ich mein Date-Objekt wahrscheinlich auch nur "stringifizieren", aber es ist offensichtlich nicht möglich, es zu versuchen. Es gibt Tonnen von "date to string" -Fragen, aber noch nicht so.

Irgendeine Idee, wie man das macht?

+2

Wie ist '" 2017-06-08T08: 36: 16Z "' eine "nicht menschenlesbare" Zeichenkette? - Was verhindert die Verwendung eines 'DateFormatter'? –

+0

wahrscheinlich nur umgekehrt von [dieser Frage] (https://stackoverflow.com/questions/41907419/ios-swift-3-convert-yyyy-mm-ddthhmmssz-format-string-to-date-object?rq=1) – Tj3n

+0

@MartinR Sorry, es war verwirrend. Ich habe es so gemeint wie in, die meisten Fragen wie diese wollen eine String-Ausgabe wie "7. Juni 2017" (etwas, das Sie an einen Benutzer ausgeben können), wo Sie wie selten (wenn überhaupt) "2017-06-08T08: 36 ausgeben würden: 16Z "zu einem Benutzer. – joey

Antwort

2

Versuchen Sie, diese

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'" 
let dateDate = NSDate() 
let stringDate = dateFormatter.string(from: date as Date) 

Wo date Ihr Date-Objekt in 2017-06-08 08:36:16 +0000 Format ist

2

Nach zwei Formate für Sie arbeiten. yyyy-MM-dd HH:mm:ss Z und yyyy-MM-dd'T'HH:mm:ss'Z'

let input = "2017-06-08 08:36:16 +0000" 
let dateFormater = DateFormatter.init() 
dateFormater.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 
if let date = dateFormater.date(from: input) { 
    dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'" 
    let output = dateFormater.string(from: date) 
    print(output) 
} 
3

Alles, was Sie das Datumsformat (DateFormatter) an die gewünschte zu tun haben, verändert sich.

Beachten Sie, dass das Format Ihrer angegebenen Datum (2017-06-08 08:36:16 +0000) ist:

yyyy-MM-dd HH: mm: ss Z

Betrachten wir zum Beispiel, dass das angegebene Datum Wert ist heute, könnten Sie lesen es -wie ein Saiten- wie folgt aus:

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 

let givenDate = Date() 
let stringGivenDate = dateFormatter.string(from: givenDate) // 2017-06-08 12:10:23 +0300 

somit um das Datumsformat zu ändern:

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'" 
let stringGivenDateWithDesiredFormat = dateFormatter.string(from: givenDate) // 2017-06-08T12:11:75Z 

Gemäß dem obigen Codefragment, Ihr gegebenes gewünschtes Format (2017-06-08T08:36:16Z) ist:

yyyy-MM-dd'T'HH: mm: SS'Z‘

Verwandte Themen