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:00Exemple : 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:30Exemple : 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 2025Exemple : 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 à ParisAvantages 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) // trueExemple : 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 Aussi dans la bibliothèque
ts-pattern TypeScript : guide complet avec exemples pratiques
GraphQL en PHP : Guide complet de la bibliothèque webonyx/graphql-php
PDF Rust : guide complet avec exemples et tutoriel
Travailler avec CSV en Swift (iOS/macOS) — bibliothèques et exemples de code