Introduction à la gestion des dates et heures en Swift
La gestion des dates et des heures est l'une des tâches clés dans le développement d'applications pour iOS et macOS. Qu'il s'agisse d'afficher la date actuelle, de calculer la différence entre des événements ou de planifier des notifications, Swift fournit une boîte à outils puissante et flexible pour ces objectifs. Dans cet article, nous allons passer en revue les classes et méthodes principales : Date, DateFormatter, Calendar, DateComponents et TimeInterval. Vous apprendrez à créer, formater, comparer et manipuler les dates en Swift.
Ce contenu sera utile aussi bien aux débutants qu'aux développeurs expérimentés souhaitant systématiser leurs connaissances. Tous les exemples de code peuvent être utilisés immédiatement dans vos projets.
Classes principales pour la gestion des dates
La classe Date
Date est le type fondamental représentant un moment précis dans le temps, indépendamment du fuseau horaire ou du calendrier. Il stocke le nombre de secondes écoulées depuis le 1er janvier 2001 (l'époque Cocoa).
import Foundation
// Date et heure actuelleslet now = Date()print("Maintenant : \\(now)")
// Date dans 1 heurelet oneHourLater = Date(timeIntervalSinceNow: 3600)print("Dans une heure : \\(oneHourLater)")
// Date à partir d'un nombre donné de secondes depuis l'époquelet epochDate = Date(timeIntervalSinceReferenceDate: 0)print("Époque Cocoa : \\(epochDate)")TimeInterval
TimeInterval est simplement un alias pour Double représentant un nombre de secondes. Il est utilisé pour définir des intervalles de temps.
let interval: TimeInterval = 86400 // 24 heures en secondeslet tomorrow = Date(timeIntervalSinceNow: interval)print("Demain : \\(tomorrow)")DateFormatter
DateFormatter est responsable de la conversion d'une date en chaîne de caractères et vice versa. C'est l'une des classes les plus fréquemment utilisées.
let formatter = DateFormatter()formatter.dateStyle = .longformatter.timeStyle = .short
let currentDate = Date()let dateString = formatter.string(from: currentDate)print("Date formatée : \\(dateString)")
// Conversion inverselet dateFromString = formatter.date(from: "15 avril 2025, 14:30")print("Date à partir de la chaîne : \\(dateFromString ?? Date())")Vous pouvez définir votre propre format avec dateFormat :
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"let customString = formatter.string(from: Date())print("Format personnalisé : \\(customString)")Calendrier et composants de date
Calendar
Calendar permet de travailler avec les dates dans le contexte d'un calendrier spécifique (grégorien, islamique, etc.) et d'un fuseau horaire.
let calendar = Calendar.currentlet components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: Date())print("Année : \\(components.year!), Mois : \\(components.month!), Jour : \\(components.day!)")DateComponents
DateComponents est une structure contenant les composants individuels d'une date (année, mois, jour, heure, etc.). Elle est utilisée pour créer de nouvelles dates ou extraire des parties de dates existantes.
// Création d'une date à partir de composantsvar birthdayComponents = DateComponents()birthdayComponents.year = 1990birthdayComponents.month = 6birthdayComponents.day = 15birthdayComponents.hour = 10
if let birthday = calendar.date(from: birthdayComponents) { print("Anniversaire : \\(birthday)")}
// Ajout de jours à une dateif let nextWeek = calendar.date(byAdding: .day, value: 7, to: Date()) { print("Dans une semaine : \\(nextWeek)")}Les composants peuvent être utilisés pour vérifier les propriétés d'une date :
let isToday = calendar.isDateInToday(Date())print("Aujourd'hui ? \\(isToday)")
let isWeekend = calendar.isDateInWeekend(Date())print("Week-end ? \\(isWeekend)")