normal fecha day convertir swift date swift3 nsdateformatter ios10

swift - fecha - strtotime+1 day



¿Convertir una marca de tiempo Unix en fecha como cadena? Rápido (3)

Recibo un bloqueo al ejecutar y apunta al dateFormmater.timezone . El error en la consola es:

No se pudo convertir el valor de tipo ''Swift.Optional'' (0x1192bf4a8) a ''NSTimeZone'' (0x1192c0270).

el valor de rowEvents.date es "1480134638.0"

Estoy tratando de sacar una marca de tiempo Unix de Firebase guardada como una cadena. Conviértalo a Fecha y, de nuevo, guárdelo como una cadena para poder publicarlo en una etiqueta de celda.

Conseguí este código de StackOverflow. Conecté mis datos y todo está bien hasta que los ejecuto. Supongo que no todo está bien ...

if let lastUpdated : String = rowEvents.date { let epocTime = TimeInterval(lastUpdated)! / 1000 // convert it from milliseconds dividing it by 1000 let unixTimestamp = NSDate(timeIntervalSince1970: epocTime) //convert unix timestamp to Date let dateFormatter = DateFormatter() dateFormatter.timeZone = NSTimeZone() as TimeZone! dateFormatter.locale = NSLocale.current // NSLocale(localeIdentifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyy-MM-dd''T''HH:mm:ssZZZZZ" dateFormatter.date(from: String(describing: unixTimestamp)) let updatedTimeStamp = unixTimestamp let cellDate = DateFormatter.localizedString(from: updatedTimeStamp as Date, dateStyle: DateFormatter.Style.full, timeStyle: DateFormatter.Style.medium) cell.subtitleLabel.text = cellDate }

El resultado vino de este código aquí:

let myTimeStamp = self.datePicker?.date.timeIntervalSince1970 let calendarDate = String(describing: myTimeStamp! /** 1000*/)


El problema es la línea dateFormatter.timeZone = NSTimeZone() as TimeZone! .

Simplemente use TimeZone lugar de NSTimeZone como
dateFormatter.timeZone = TimeZone.current y su código funcionará.

También puede eliminar su / 1000 porque 1480134638.0 parece más a segundos que a milisegundos (desde 1970).


Puede convertir unixTimestamp a la fecha utilizando Date(timeIntervalSince1970:) .

let unixTimestamp = 1480134638.0 let date = Date(timeIntervalSince1970: unixTimestamp)

Si desea mostrar la fecha en una cadena con formato específico, puede utilizar DateFormatter esta manera.

let date = Date(timeIntervalSince1970: unixtimeInterval) let dateFormatter = DateFormatter() dateFormatter.timeZone = TimeZone(abbreviation: "GMT") //Set timezone that you want dateFormatter.locale = NSLocale.current dateFormatter.dateFormat = "yyyy-MM-dd HH:mm" //Specify your format that you want let strDate = dateFormatter.string(from: date)


Swift 4.1. He creado una función. Simplemente pase su timeStamp en la función param y la función devolverá los datos en el tipo de datos de cadena. Puede agregar más propiedades al objeto DateFormatter.

func getDateFromTimeStamp(timeStamp : Double) -> String { let date = NSDate(timeIntervalSince1970: timeStamp) let dayTimePeriodFormatter = DateFormatter() dayTimePeriodFormatter.dateFormat = "dd MMM YY, hh:mm a" // UnComment below to get only time // dayTimePeriodFormatter.dateFormat = "hh:mm a" let dateString = dayTimePeriodFormatter.string(from: date as Date) return dateString }