Travailler avec les dates en Go (Golang) : bibliothèques time, carbon et now

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 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/v2


Exemples 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 jour
  • IsWeekend() / IsWeekday() — vérification du jour de la semaine
  • Age() — âge à partir de la date de naissance
  • DiffForHumans() — 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/now


Exemples d'utilisation



package main

import ( "fmt" "time" "github.com/jinzhu/now")

func main() { // Début du jour beginningOfDay := now.BeginningOfDay() fmt.Println("

Recommendations