info@codabee.com

Convertir une String en Date avec Swift

Convertir une String en Date avec Swift

 

Lorsque nous développons une application, il n’est pas rare d’avoir besoin de convertir une date que l’on a récupéré en type String et de devoir la convertir en type Date.

En effet, lorsque nous travaillons avec une base de données, les dates sont souvent stockées en tant que String ou en TimeInterval en tant que Double. Si vous travaillez avec un flux RSS, les date de publication (pubDate) sont aussi de type String lorsque votre XMLParser les récupère.

Dans cet article, je vous ai créé un table qui vous permettra grâce à la String récupérée de pouvoir la formatter et ainsi la transformer en Date.

 

 

Petit rappel: Pour ceux qui ne sont pas encore familiers à la conversion de String en Date, nous allons utiliser un DateFormatter comme suit:

let formatter = DateFormatter()
formatter.dateFormat = ” (C’est ici que nous devons ajouter le format de notre date)”
formatter.locale = Locale(identifier: “(c’est ici que nous devons entrer l’identifier de la langue utilisée dans la String de notre date)”)

 

 

 

Nous allons nous baser sur la date suivante: 05 Septembre 2018, 14:08:00 +0100.

Le tableau montre dans la colonne exemple les résultats en langue Locale Anglais et français.

 

 

CaractèresExempleDescription
y2018Année complète
yy18Année 2 décimales
yyyy2018Année 4 décimales
Trimestre
Q3Trimestre de l'année
QQQQ3 / T3Trimestre de l'année incluant le Q si en anglais, le T si en français
QQQQ3th quarter / 3e trimestreTrimestre écrit en entier
Mois
M9 Nombre du mois de l'année
MM09Nombre du mois de l'année
MMMSepNom du mois abrégé
MMMMSeptember / SeptembreNom du mois complet
MMMMMSInitiale du mois
Jour
d5Jour du mois.
dd05 Jour du mois.
EWed / mer.Nom du jour abrégé
EEEEWednesday / mercrediNom complet du jour
EEEEEW / MInitiale du jour de la semaine
Heure
h2Heure format 12h
hh02Heure format 12h
H14 Heure format 24h
HH14 Heure format 24h
aPMAM / PM uniquement pour le format 12H
Minute
m8Minute
mm08Minute
Seconde
s0Secondes
ss00Secondes
Fuseau Horaire
zzzCSTAbréviation 3 lettres du fuseau horaire (si connu)
zzzzCentral Standard Time Fuseau horaire complet.
zzzzCST-06:00 Fuseau horaire abrégé avec décalage par rapport à GMT
Z-0600RFC 822  format GMT.
ZZZZZ-06:00ISO 8601  format.

 

Voila donc pour la théorie.
Passons à la pratique et utilisons le flux RSS de www.codabee.com pour obtenir une date String.

Dans chaque <item> vous avez une pubDate qui correspond à la date de création de l’article. En voici une au hasard:

Sat, 25 Nov 2017 13:49:26 +0000


Tout d’abord la Locale, nous pouvons voir que cette date n’est pas en Français mais en Anglais. nous utiliserons donc l’identifier de locale comme ceci:
formatter.locale = Locale(identifier: “en_EN”)

Ensuite, en se fiant au tableau ci-dessus, nous pouvons obtenir le dateFormat:
formatter.dateFormat = “EEE, dd MMM yyyy HH:mm:ss Z”

Pour convertir la String obtenue en date, nous faisons donc:
let formatter = DateFormatter()
formatter.dateFormat = “EEE, dd MMM yyyy HH:mm:ss Z”
formatter.locale = Locale(identifier: “en_EN”)
let date: Date = formatter.date(from: “Sat, 25 Nov 2017 13:49:26 +0000”)

Vous pouvez vous entraîner sur une Playground à convertir plusieurs formats de date et ainsi bien comprendre le mécanisme.

2 réponses

  1. Alain dit :

    Super. Ça va m’aider

  2. […] Pour en savoir plus sur les dates avec Swift : Cliquez ici […]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *