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í:
- Convertir NSDate a NSString 14 respuestas
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