Cómo convertir cadena de fecha a cadena en Swift iOS? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Estoy aprendiendo swift y soy golpeado en la conversión de la cadena de fecha a NSDate a cadena. Estoy obteniendo la cadena de fecha en este formato "Jue, 22 Oct 2015 07:45:17 +0000". Necesito mostrar la fecha en el formato MM-dd-aaaa. Probé el siguiente código pero, devuelve "null".

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

¿Puede alguien por favor ayudar donde estoy yendo mal? Esperando la ayuda. Gracias de antemano.

Author: Yuvaraj.M, 2015-10-22

4 answers

Primero, necesita convertir su cadena a NSDate con su formato. Luego, cambia el dateFormatter a su formato simple y lo convierte de nuevo en una cadena.

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!))")

El resultado impreso es: Dateobj: 10-22-2015

 92
Author: t4nhpt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 02:22:28
//String to Date Convert

var dateString = "2014-01-12"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let s = dateFormatter.dateFromString(dateString)
println(s)


//CONVERT FROM NSDate to String  

let date = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" 
var dateString = dateFormatter.stringFromDate(date)
println(dateString)  
 43
Author: Kishor Kumar Rawat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-23 23:37:49

Swift 3:

let date = NSDate()
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
var dateString = dateFormatter.stringFromDate(date)
println(dateString)

Y en Swift 4 esto ahora se escribiría como:

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
var dateString = dateFormatter.string(from: date)
 5
Author: brockk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-31 09:42:52

Véase la respuesta de Gary Makin. Y necesita cambiar el formato o los datos. Porque los datos que tiene no encajan en el formato elegido. Por ejemplo, este código funciona correctamente:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let dateObj = dateFormatter.dateFromString("10 10 2001")
print("Dateobj: \(dateObj)")
 2
Author: Alexey Pichukov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-22 09:58:47