Il existe de nombreuses techniques pour convertir une date en chaîne.
Peu importe la technique utilisée, il faut se rappeler qu'une date est sujette aux configurations régionales ainsi qu'à la langue. L'apparence de la date dépendra donc des configurations de l'appareil ou du simulateur ( / / ).
Voici deux exemples de configurations que l'on pourrait retrouver sur un téléphone.

L'interpolation de chaîne permet de convertir à peu près n'importe quel type de donnée en chaîne de caractère.
Par contre, nous n'avons aucun contrôle sur la façon dont les informations seront converties.
Text("\(Date.now)")
En français, la date sera au format : jeudi 11 avril 2024 à 15:28:10 heure avancée de l'Est
En anglais, on verra plutôt : Thursday, April 11, 2024 at 3:28:10 PM Eastern Daylight Saving Time
La vue Text attend normalement un paramètre de type chaîne.
Il est également possible de lui passer un premier paramètre de type Date suivi du paramètre style pour préciser comment afficher cette date.
Text(Date.now, style: .date)
En français : 11 avril 2024
En anglais : April 11, 2024
La méthode .formatted() permet de préciser le format d'affichage d'une date.
Il existe un format par défaut. Il est également possible de lui passer des paramètres afin de préciser le format.
struct ContentView: View {
var dateTransaction = Date.now.formatted()
var body: some View {
Text(dateTransaction)
}
}
En français : 2024-04-11 15:28
En anglais : 2024/4/11, 3:28 PM
Voici un autre exemple. Cette fois, des paramètres ont été ajoutés pour préciser le format.
struct ContentView: View {
var dateTransaction = Date.now.formatted(date: .abbreviated, time: .shortened)
var body: some View {
Text(dateTransaction)
}
}
En français : 11 avr. 2024 à 15:28
En anglais : Apr 11, 2024 at 3:28 PM
Voici quelques exemples des formats possibles.
| date | time | français | anglais |
| .abbreviated | .shortened | 11 avr. 2024 à 15:28 | Apr 11, 2024 at 3:28 PM |
| .long | .standard | 11 avril 2024 à 15:28:10 | April 11, 2024 at 3:28:10 PM |
| .complete | .complete | jeudi 11 avril 2024 à 15:28:10 HAE | Thursday, April 11, 2024 at 3:28:10 PM EDT |
| .numeric | .omitted | 2024-04-11 | 2024/4/11 |
| .omitted | .standard | 15:28:10 | 3:28:10 PM |
Pour avoir un maximum de contrôle sur le format de la date, il est possible de travailler avec un DateFormatter().
La syntaxe est très semblable à celle utilisée pour instancier une date. La seule différence est l'utilisation de la méthode string().
struct ContentView: View {
var dateTransaction: String
init() {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateTransaction = dateFormatter.string(from: Date.now)
}
var body: some View {
Text(dateTransaction)
}
}
Dans cet exemple, le résultat sera toujours au même format puisqu'aucun mot n'est présent.
La date apparaîtra au format : 2024-04-11 15:28:10
Attention : il aurait été possible de demander le mois en toutes lettres en changeant le format comme ceci :
dateFormatter.dateFormat = "dd MMMM yyyy"
Sans précautions supplémentaires, on obtiendrait :
En français : 11 avril 2024
En anglais : 11 April 2024 Ouch!
Bien qu'il soit possible de remédier à ce problème, il est préférable d'utiliser une des techniques présentées plus haut pour que la date respecte le format de localisation.
« Preparing dates, currencies, and numbers for translation ». Apple. https://developer.apple.com/documentation/xcode/preparing-dates-numbers-with-formatters
▼Publicité