Conversion d'un horodatage Unix en Date en tant que chaîne? Rapide
- Je obtenir un crash lors de l'exécution et de points à la dateFormmater.timezone
.
L'erreur dans la console:
Pourrait ne pas jeter de valeur de type 'Swift.Facultatif (0x1192bf4a8) à "NSTimeZone' (0x1192c0270).
la valeur de rowEvents.date
est "1480134638.0"
Im essayant de sortir d'un timestamp Unix de Firebase enregistré comme une chaîne de caractères. Le convertir à la Date et à nouveau enregistrer comme une chaîne de caractères afin que je puisse l'afficher sur une étiquette de la cellule.
J'ai eu ce code de StackOverflow. J'ai branché mes données et tout est bon jusqu'à ce que je le lance. Je suppose que tout n'est pas tout bon...
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
}
Le résultat est entré à partir de ce code ici:
let myTimeStamp = self.datePicker?.date.timeIntervalSince1970
let calendarDate = String(describing: myTimeStamp! /** 1000*/)
source d'informationauteur CRey
Vous devez vous connecter pour publier un commentaire.
Vous pouvez convertir
unixTimestamp
à jour à l'aide deDate(timeIntervalSince1970:)
.Si vous souhaitez afficher la date en chaîne de caractères spécifiques de formiate que vous pouvez utiliser
DateFormatter
comme de cette façon.Le problème est la ligne
dateFormatter.timeZone = NSTimeZone() as TimeZone!
.Simplement utiliser
TimeZone
au lieu deNSTimeZone
commedateFormatter.timeZone = TimeZone.current
et votre code fonctionne.Vous pouvez également supprimer votre
/1000
parce que1480134638.0
ressemble plus à de secondes que millisecondes (depuis 1970).Swift 4.1. J'ai créé une fonction. Il suffit de passer vous timeStamp en fonction de param et de la fonction renverra les données dans le type de données string. Vous pouvez ajouter plus de propriétés à DateFormatter objet.