Travailler avec les dates en Go (Golang) : aperçu des bibliothèques
Travailler avec les dates et l'heure est l'une des tâches clés dans tout langage de programmation. En Go (Golang), la bibliothèque standard fournit un package puissant time, mais parfois, pour plus de commodité, les développeurs se tournent vers des bibliothèques tierces. Dans cet article, nous allons passer en revue les principales fonctionnalités du package standard et examiner deux bibliothèques populaires : carbon et now.
1. Le package standard time
Le package time est la base pour travailler avec les dates en Go. Il inclut les types Time, Duration, des fonctions pour l'analyse, le formatage, le travail avec les minuteries et les fuseaux horaires.
Création et formatage d'une date
package main
import ( "fmt" "time")
func main() { // Heure actuelle now := time.Now() fmt.Println("Maintenant :", now)
// Création d'une date spécifique date := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("Date spécifique :", date)
// Formatage (obligatoirement "2006-01-02 15:04:05" comme référence) fmt.Println("Format :", date.Format("02.01.2006 15:04:05"))}Analyse d'une chaîne en date
func main() { // Analyse avec indication du format str := "2025-03-15 14:30:00" parsed, err := time.Parse("2006-01-02 15:04:05", str) if err != nil { panic(err) } fmt.Println("Analysé :", parsed)}Travail avec les fuseaux horaires
func main() { loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := time.Now().In(loc) fmt.Println("Heure de Moscou :", moscowTime)}Différence entre les dates
func main() { start := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) end := time.Date(2025, 12, 31, 23, 59, 59, 0, time.UTC) duration := end.Sub(start) fmt.Printf("Différence : %v (heures : %v)", duration, duration.Hours())}2. La bibliothèque carbon
La bibliothèque carbon (github.com/golang-module/carbon) est un port de la célèbre bibliothèque PHP Carbon pour Go. Elle offre une interface fluide pratique pour travailler avec les dates.
Installation
go get github.com/golang-module/carbon/v2Exemples d'utilisation
package main
import ( "fmt" "github.com/golang-module/carbon/v2")
func main() { // Date actuelle now := carbon.Now() fmt.Println("Maintenant :", now.ToString())
// Création d'une date date := carbon.Parse("2025-03-15 14:30:00") fmt.Println("Analysé :", date.ToDateString())
// Ajout de jours future := carbon.Now().AddDays(10) fmt.Println("Dans 10 jours :", future.ToDateString())
// Différence en jours diff := carbon.Now().DiffInDays(carbon.Parse("2025-12-31")) fmt.Printf("Jusqu'au Nouvel An : %d jours", diff)
// Formatage fmt.Println("Format personnalisé :", carbon.Now().Format("d/m/Y H:i:s"))}Méthodes pratiques
StartOfDay()/EndOfDay()— début/fin du jourIsWeekend()/IsWeekday()— vérification du jour de la semaineAge()— âge à partir de la date de naissanceDiffForHumans()— différence lisible par un humain (par exemple, "il y a 3 jours")
3. La bibliothèque now
La bibliothèque now (github.com/jinzhu/now) du créateur de GORM est un utilitaire léger pour obtenir le début et la fin des périodes temporelles.
Installation
go get github.com/jinzhu/nowExemples d'utilisation
package main
import ( "fmt" "time" "github.com/jinzhu/now")
func main() { // Début du jour beginningOfDay := now.BeginningOfDay() fmt.Println(" Aussi dans la bibliothèque
Validation des données en Rust : bibliothèques et approches pour un code fiable
Burn Rust : guide complet avec exemples pratiques
Mise en cache en PHP : Redis, Memcached et solutions intégrées
Géolocalisation et cartes en Kotlin : Guide complet d'intégration
Apprentissage automatique en Java : aperçu des bibliothèques pour le développement de modèles