Travailler avec les dates en Swift : Foundation, SwiftDate, DateTools (iOS/macOS)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec les dates en Swift (iOS/macOS) : aperçu des bibliothèques



Dans le développement pour iOS et macOS, la gestion des dates et du temps est l'une des tâches clés. Le framework standard Foundation fournit des outils puissants, mais parfois lourds. Pour simplifier le code et améliorer la lisibilité, les développeurs utilisent souvent des bibliothèques tierces. Dans cet article, nous examinerons les capacités natives de Swift (Foundation) et deux bibliothèques populaires : SwiftDate et DateTools.



1. Foundation : fonctionnalités intégrées



La boîte à outils de base de Foundation comprend Date, DateFormatter, Calendar et TimeZone. Cela suffit pour la plupart des tâches, mais nécessite un code verbeux.



Exemple : création et formatage d'une date

import Foundation

let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.timeZone = TimeZone(abbreviation: "UTC")let dateString = formatter.string(from: now)print(dateString) // 2025-04-01 14:30:00


Exemple : calcul de la différence entre deux dates

let startDate = Date()let endDate = Calendar.current.date(byAdding: .day, value: 7, to: startDate)!let components = Calendar.current.dateComponents([.day, .hour], from: startDate, to: endDate)print("\\(components.day!) jours, \\(components.hour!) heures")


Avantages de Foundation : aucune dépendance, contrôle total, prise en charge de tous les fuseaux horaires et calendriers.
Inconvénients : beaucoup de code pour des opérations simples, complexité avec la localisation et les dates relatives.



2. SwiftDate — une bibliothèque puissante et flexible



SwiftDate est l'une des bibliothèques les plus populaires pour travailler avec les dates en Swift. Elle étend les capacités de Foundation en ajoutant des méthodes pratiques pour l'analyse, le formatage, les manipulations et la gestion des fuseaux horaires.



Installation (Swift Package Manager)

// Package.swiftdependencies: [    .package(url: "https://github.com/malcommac/SwiftDate.git", from: "6.3.0")]


Exemple : création d'une date à partir d'une chaîne

import SwiftDate

let date = "2025-04-01T14:30:00+0000".toDate()print(date?.toFormat("dd.MM.yyyy HH:mm")) // 01.04.2025 14:30


Exemple : dates relatives et intervalles

let now = Date()let oneWeekAgo = now - 1.weeksprint(oneWeekAgo.toRelative()) // "il y a 1 semaine"

let nextMonth = now + 1.monthsprint(nextMonth.toFormat("MMMM yyyy")) // Mai 2025


Exemple : gestion des fuseaux horaires

let parisDate = DateInRegion(Date(), region: .init(calendar: Calendars.gregorian, zone: Zones.europeParis, locale: Locales.french))print(parisDate.toFormat("HH:mm")) // heure à Paris


Avantages de SwiftDate : syntaxe concise, prise en charge intégrée des dates relatives, des régions et des locales, analyse puissante.
Inconvénients : taille importante de la bibliothèque (~2 Mo), peut être excessive pour des projets simples.



3. DateTools — simplicité et lisibilité



DateTools est une bibliothèque légère, axée sur la lisibilité du code. Elle ajoute des méthodes à Date pour un calcul rapide des intervalles, des comparaisons et du formatage.



Installation (CocoaPods)

pod 'DateToolsSwift'


Exemple : vérification des intervalles de temps

import DateToolsSwift

let date1 = Date()let date2 = date1 + 2.hoursprint(date2.isToday) // trueprint(date1.earlierDate(date2) == date1) // true


Exemple : chaînes lisibles par l'humain

let pastDate = Date() - 3.daysprint(pastDate.timeAgoSinceNow) // "il y a 3 jours"

let futureDate = Date() + 1.weeksprint(futureDate.timeAgoSinceNow) // "dans 1 s

Recommendations