example ios swift swift3 nsdateformatter

example - Convertir NSDate a String en iOS Swift



swift 4 dateformatter example (7)

Algo a tener en cuenta al crear formateadores es intentar reutilizar la misma instancia si puede, ya que los formateadores son bastante caros desde el punto de vista computacional. El siguiente es un patrón que uso con frecuencia para aplicaciones donde puedo compartir el mismo formateador en toda la aplicación, adaptado de NSHipster .

extension DateFormatter { static var sharedDateFormatter: DateFormatter = { let dateFormatter = DateFormatter() // Add your formatter configuration here dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" return dateFormatter }() }

Uso:

let dateString = DateFormatter.sharedDateFormatter.string(from: Date())

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de convertir un NSDate en una String y luego cambiar el formato. Pero cuando paso NSDate a String está produciendo espacios en blanco.

let formatter = DateFormatter() let myString = (String(describing: date)) formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let yourDate: Date? = formatter.date(from: myString) formatter.dateFormat = "dd-MMM-yyyy" print(yourDate)


Después de asignar DateFormatter , debe proporcionar la cadena formateada y luego puede convertirla como cadena de esta manera

var date = Date() let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let myString = formatter.string(from: date) let yourDate: Date? = formatter.date(from: myString) formatter.dateFormat = "dd-MMM-yyyy" let updatedString = formatter.string(from: yourDate!) print(updatedString)

Salida

01-mar-2017


Puedes usar esta extensión:

extension Date { func toString(withFormat format: String) -> String { let formatter = DateFormatter() formatter.dateFormat = format let myString = formatter.string(from: self) let yourDate = formatter.date(from: myString) formatter.dateFormat = format return formatter.string(from: yourDate!) } }

Y úselo en su controlador de vista de esta manera (reemplace <"aaaa"> con su formato):

yourString = yourDate.toString(withFormat: "yyyy")


Siempre uso este código al convertir Date a String . (Swift 3)

extension Date { func toString( dateFormat format : String ) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = format return dateFormatter.string(from: self) } }

y llama así. .

let today = Date() today.toString(dateFormat: "dd-MM")


Su código actualizado. Actualícelo.

let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let myString = formatter.string(from: date as Date) let yourDate: Date? = formatter.date(from: myString) formatter.dateFormat = "dd-MMM-yyyy" print(yourDate!)


obtienes la información detallada del documento de formato de fecha de Apple . Si deseas establecer el formato de fecha para tu cadena de fecha, mira este link , el formato de fecha de detalle que puedes obtener here por ejemplo, haz here en

let formatter = DateFormatter() // initially set the format based on your datepicker date / server String formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let myString = formatter.string(from: Date()) // string purpose I add here // convert your string to date let yourDate = formatter.date(from: myString) //then again set the date format whhich type of output you need formatter.dateFormat = "dd-MMM-yyyy" // again convert your date to string let myStringafd = formatter.string(from: yourDate!) print(myStringafd)

obtienes la salida como


DateFormatter tiene algunos estilos de fecha de fábrica para aquellos demasiado flojos para jugar con cadenas de formato. Si no necesita un estilo personalizado, aquí hay otra opción:

extension Date { func asString(style: DateFormatter.Style) -> String { let dateFormatter = DateFormatter() dateFormatter.dateStyle = style return dateFormatter.string(from: self) } }

Esto le brinda los siguientes estilos:

short, medium, long, full

Ejemplo de uso:

let myDate = Date() myDate.asString(style: .full) // Wednesday, January 10, 2018 myDate.asString(style: .long) // January 10, 2018 myDate.asString(style: .medium) // Jan 10, 2018 myDate.asString(style: .short) // 1/10/18