Travailler avec les dates en Go (Golang) : aperçu des bibliothèques et packages

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 complet des bibliothèques



Travailler avec les dates et l'heure est l'une des tâches les plus courantes dans le développement web, l'analyse et le backend. En Go (Golang), la bibliothèque standard time fournit une boîte à outils puissante, mais pas toujours intuitive. Pour simplifier le développement, il existe de nombreuses bibliothèques tierces. Dans cet article, nous allons détailler les approches principales et les bibliothèques populaires pour travailler avec les dates en Go.



1. Package standard time



Le package time est la base du travail avec les dates et l'heure en Go. Il inclut les types Time, Duration, Location et des fonctions pour le formatage, l'analyse et l'arithmétique.



Fonctionnalités principales :

  • Heure actuelle : time.Now()
  • Formatage : méthode .Format(layout string) — utilise un format de référence spécial Mon Jan 2 15:04:05 MST 2006 (Go est né en 2006).
  • Analyse : fonction time.Parse(layout, value string).
  • Arithmétique : méthodes .Add(d Duration), .Sub(t Time), .AddDate(y, m, d int).
  • Fuseaux horaires : time.LoadLocation(name string) et méthode .In(loc *Location).


package main

import ( "fmt" "time")

func main() { // Heure actuelle now := time.Now() fmt.Println("Maintenant :", now)

// Formatage fmt.Println("Format RFC3339 :", now.Format(time.RFC3339)) fmt.Println("Format personnalisé :", now.Format("02.01.2006 15:04:05"))

// Analyse d'une chaîne parsed, _ := time.Parse("2006-01-02", "2024-03-15") fmt.Println("Analysé :", parsed)

// Gestion des fuseaux horaires loc, _ := time.LoadLocation("Europe/Moscow") moscowTime := now.In(loc) fmt.Println("Heure à Moscou :", moscowTime)

// Arithmétique tomorrow := now.AddDate(0, 0, 1) fmt.Println("Demain :", tomorrow.Format("02.01.2006"))}


Particularité : Go utilise un format de référence unique (2006-01-02T15:04:05Z07:00), et non les habituels YYYY-MM-DD. Cela nécessite un temps d'adaptation, mais élimine les ambiguïtés.



2. Bibliothèque carbon (équivalent de Carbon pour PHP)



La bibliothèque carbon est un port de la célèbre bibliothèque PHP Carbon. 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.ToDateTimeString())

// Création d'une date date := carbon.CreateFromDate(2024, 3, 15) fmt.Println("Date :", date.ToDateString())

// Différence entre dates start := carbon.Parse("2024-01-01") end := carbon.Parse("2024-03-15") diff := start.DiffInDays(end) fmt.Printf("Jours entre : %d", diff)

// Formats lisibles fmt.Println("Hier :", carbon.Yesterday().ToDateString()) fmt.Println("Demain :", carbon.Tomorrow().ToDateString())

// Vérifications fmt.Println("Est-ce le week-end ?", now.IsWeekend()) fmt.Println("Est-ce le matin ?", now.IsMorning())}


Avantages : API simple, prise en charge des caractères chinois, localisation, méthodes pour travailler avec le début/la fin du jour, de la semaine, du mois.



3. Bibliothèque now (outil minimaliste)



La bibliothèque now de l'auteur de GORM est un outil léger pour calculer le début et la fin des périodes temporelles.



Inst

Recommendations