swift - Convertir une Chaîne de caractères à une Date et ensuite à une Chaîne de caractères dans un format différent
Supposons que j'ai une simple Chaîne de caractères, extraites à partir d'un tableau de chaînes de caractères (représentant les dates) -
var myDateString = "2015-11-25 04:31:32.0"
Maintenant, je veux le convertir en chaîne qui ressemble à Nov 25, 2015.
Pour cela, je suppose que j'ai besoin d' -
- obtenir un NSDate objet date de chaîne à l'aide de NSDateFormatter
- obtenir une chaîne de caractères à partir de cet objet NSDate par l'utilisation de certaines fonctionnalités (que j'ai pu trouver)
J'ai essayé dans ce terrain de jeu, mais ont été incapables de résoudre un problème simple.
Voici ce que j'ai essayé -
Line 1| var dateFormatter = NSDateFormatter()
Line 2| dateFormatter.locale = NSLocale.currentLocale()
Line 3| dateFormatter.dateFormat = "YYYY-MM-dd HH:mm:ss.A"
Line 4| let somedate = dateFormatter.dateFromString(str)
Line 5| let somedateString = dateFormatter.stringFromDate(somedate!)
Dans la barre latérale de Xcode, ligne 4 tirages "Nov 25, 2015, 12:00 AM"
, mais lorsque j'essaie d'imprimer une chaîne de somedate
, je reçois "2015-11-25 00:00:00.0"
.
Je n'ai pas trouvé une seule explication correcte de NSDates n'importe où.
C'était tellement plus facile en Java avec parse()
et format()
fonctions pour les Dates.
... et AAAA au lieu de yyyy est la cause d'un bon rire à chaque année autour de, le 1er janvier, quand tout le monde billets comment leurs dates sont cassés.
OriginalL'auteur Kunal Chawla | 2016-01-16
Vous devez vous connecter pour publier un commentaire.
Mis à jour pour Swift 3.0
Vous avez besoin de deux date formateurs - l'un pour donner un sens à votre chaîne d'entrée et le convertir en un NSDate, et un autre formateur de créer la chaîne de sortie
J'ai mis à jour cette réponse à un changement de la date de formatage de aaaa jusqu'en AAAA. Dans la plupart des cas, il n'y aura pas de différence entre les deux, mais AAAA peut traiter les premiers jours de l'année comme faisant partie de la dernière semaine complète de l'année précédente.
Apple developer guides de l'expliquer comme ça.
NO NO NO NO NO. Lire sur la différence entre AAAA et aaaa et réparer votre propre code à l'endroit où vous utilisez AAAA.
Swift est génial. La date de formateur avec AAAA est cassé.
Génial! Merci
OriginalL'auteur Russell
Vous aurez besoin de deux date formateurs comme d'autres l'ont suggéré. En outre, l'une de vos questions, c'est que vous êtes en utilisant .Une place de .S pour les fractions de seconde. (Voir le lien à Unicode Spécification De Format De Date comme l'a souligné @MartinR commentaire)
.Un est Millisecondes dans la journée
.S est à la fraction de Seconde
Les opérations suivantes dans une aire de Jeux:
OriginalL'auteur So Over It