2015-10-22 31 views
38

Sto imparando rapidamente e sono colpito nel convertire la stringa di data in NSDate in stringa. Sto ottenendo la stringa della data in questo formato "Gio, 22 Ott 2015 07:45:17 +0000". Devo mostrare la data nel formato MM-gg-aaaa. Ho provato il seguente codice, ma restituisce "null".Come convertire stringa da data a stringa in Swift iOS?

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-yyyy" 
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle 
let dateObj = dateFormatter.dateFromString(dateString!) 
print("Dateobj: \(dateObj)") 

Qualcuno può aiutare dove sta andando male? In attesa dell'aiuto. Grazie in anticipo.

+2

leggere questo documento se uno vuole sapere la data formata http://www.unicode.org/ reports/tr35/tr35-25.html # Date_Format_Patterns –

risposta

83

In primo luogo, è necessario convertire la stringa per NSDate con il suo formato. Quindi, si modifica lo dateFormatter nel formato semplice e lo si converte in una stringa.

SWIFT 3

let dateString = "Thu, 22 Oct 2015 07:45:17 +0000" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss +zzzz" 
dateFormatter.locale = Locale.init(identifier: "en_GB") 

let dateObj = dateFormatter.date(from: dateString) 

dateFormatter.dateFormat = "MM-dd-yyyy" 
print("Dateobj: \(dateFormatter.string(from: dateObj!))") 

Il risultato stampato è: Dateobj: 10-22-2015

+3

In 'Swift 3' è abbastanza simile, invece di' dateFormatter.stringFromDate (date) 'è' dateFormatter.string (from: date) '. – kikettas

+1

Questo si bloccherà se il tuo dispositivo non è in inglese a causa di "Thu", devi specificare la locale. In swift 3: 'dateFormatter.locale = Locale.init (identificativo:" en_GB ")' – Aximem

+0

NSDateFormatter è stato sostituito con DateFormatter – mbdavis

2

Vedere la risposta di Gary Makin. E hai bisogno di cambiare il formato o i dati. Perché i dati che hai non rientrano nel formato scelto. Per esempio, questo codice funziona correttamente:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-yyyy" 
let dateObj = dateFormatter.dateFromString("10 10 2001") 
print("Dateobj: \(dateObj)") 
41

// Swift 3

//String to Date Convert 

let dateString = "2014-01-12" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd" 
let s = dateFormatter.date(from:dateString) 
print(s!) 

//CONVERT FROM NSDate to String 

let date = NSDate() 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd" 
let dateString = dateFormatter.string(from:date as Date) 
print(dateString) 
2
let date = NSDate() 
var dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "MM-dd-yyyy" 
var dateString = dateFormatter.stringFromDate(date) 
println(dateString)