Travailler avec les dates en Go (Golang) : aperçu des bibliothèques pour l'analyse, le formatage et les manipulations

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) : bibliothèques et outils



Le langage Go (Golang) propose une bibliothèque standard puissante time, qui couvre la plupart des tâches liées aux dates et à l'heure. Cependant, pour des opérations complexes, comme l'analyse de formats non standard, le travail avec des dates relatives ou les calculs avec des calendriers professionnels, la communauté a créé plusieurs bibliothèques utiles. Dans cet article, nous examinerons à la fois les capacités intégrées de Go et les meilleurs packages tiers pour travailler avec les dates.



1. Bibliothèque intégrée time



La bibliothèque standard time est la base de toute opération sur les dates en Go. Elle fournit :

  • Les types Time, Duration, Location
  • Des fonctions pour obtenir l'heure actuelle, créer des dates, analyser et formater
  • La prise en charge des fuseaux horaires et des horloges monotones


Obtenir l'heure actuelle

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Heure actuelle :", now) fmt.Println("Année :", now.Year()) fmt.Println("Mois :", now.Month()) fmt.Println("Jour :", now.Day())}


Formatage des dates

En Go, un format de référence spécial est utilisé : Mon Jan 2 15:04:05 MST 2006 (1,2,3,4,5,6 — les chiffres dans l'ordre croissant).

now := time.Now()fmt.Println(now.Format("2006-01-02 15:04:05"))   // 2025-03-15 14:30:00fmt.Println(now.Format("02 Jan 2006"))           // 15 Mar 2025fmt.Println(now.Format(time.RFC3339))            // 2025-03-15T14:30:00Z


Analyse de chaînes

dateStr := "2025-03-15 14:30:00"t, err := time.Parse("2006-01-02 15:04:05", dateStr)if err != nil {    panic(err)}fmt.Println(t) // 2025-03-15 14:30:00 +0000 UTC


Gestion des fuseaux horaires

loc, _ := time.LoadLocation("Europe/Moscow")moscowTime := time.Now().In(loc)fmt.Println("Heure de Moscou :", moscowTime.Format("15:04:05"))


2. Bibliothèque carbon



Le package github.com/golang-module/carbon est l'équivalent Go de la populaire bibliothèque PHP Carbon. Il fournit une API pratique pour travailler avec les dates, y compris les dates relatives, les formats lisibles par l'homme et les appels chaînés.



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(now.ToDateString()) // 2025-03-15

// Dates relatives fmt.Println(now.AddDays(7).ToDateString()) // 2025-03-22 fmt.Println(now.SubMonths(1).ToDateString()) // 2025-02-15 fmt.Println(now.StartOfMonth().ToDateString()) // 2025-03-01 fmt.Println(now.EndOfMonth().ToDateString()) // 2025-03-31

// Formats lisibles par l'homme fmt.Println(now.DiffForHumans()) // 刚刚 (à l'instant)

// Analyse avec prise en charge de multiples formats t := carbon.Parse("2025-03-15 14:30:00") fmt.Println(t.ToDateTimeString()) // 2025-03-15 14:30:00

// Gestion des fuseaux horaires cst := carbon.Now(carbon.NewYork) fmt.Println(cst.ToDateTimeString()) // heure à New York}


3. Bibliothèque now



Le package github.com/jinzhu/now (de l'auteur de GORM) fournit des fonctions pratiques pour obtenir le début et la fin des périodes temporelles.



Installation

go get github.com/jinzhu/now


Exemples

package main

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

func main() { t := time.Now() fmt.Println(now.BeginningOfMonth(t)) // 2025-03-01 00:00:00 fmt.Println(now.EndOfMonth(t)) // 2025-03-31 23:59:59 fmt.Println(now.BeginningOfYear(t))

Recommendations