Travailler avec les dates et l'heure en Go : guide complet

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

Introduction au travail avec les dates et l'heure en Go

Le travail avec les dates et l'heure est l'une des tâches clés dans tout langage de programmation. Le langage Go (Golang) fournit un package time puissant et intuitif, qui permet d'effectuer toutes les opérations de base : obtenir l'heure actuelle, analyser des chaînes, formater, calculer des différences, créer des minuteries et bien plus encore. Contrairement à certains autres langages, Go utilise un format de référence temporelle unique, ce qui rend le code plus lisible et prévisible. Dans cet article, nous allons détailler les principales fonctionnalités du package time à l'aide d'exemples pratiques.



Types principaux et obtention de l'heure actuelle

Le type time.Time

Le type central du package time est la structure time.Time. Elle stocke les informations sur les secondes, les nanosecondes, le fuseau horaire et un compteur monotone (pour des mesures précises).



Obtention de l'instant présent

Pour obtenir l'heure actuelle, on utilise la fonction time.Now(). Elle renvoie l'heure locale basée sur les paramètres système.

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()) fmt.Println("Heures :", now.Hour()) fmt.Println("Minutes :", now.Minute()) fmt.Println("Secondes :", now.Second()) fmt.Println("Nanosecondes :", now.Nanosecond()) fmt.Println("Jour de la semaine :", now.Weekday())}


Création manuelle d'une date

Vous pouvez créer un instant précis avec la fonction time.Date(). Elle prend l'année, le mois, le jour, l'heure, la minute, la seconde, la nanoseconde et le fuseau horaire.

package main

import ( "fmt" "time")

func main() { // 15 mars 2025, 14:30:00, UTC specificDate := time.Date(2025, time.March, 15, 14, 30, 0, 0, time.UTC) fmt.Println("Date créée :", specificDate)}


Analyse et formatage des dates

Le format de référence de Go

Go utilise une approche unique pour le formatage : au lieu de codes comme YYYY-MM-DD, on utilise la date de référence Mon Jan 2 15:04:05 MST 2006 (ou en abrégé 2006-01-02T15:04:05Z07:00). Cela signifie que pour indiquer l'année, vous écrivez 2006, pour le mois — 01, pour le jour — 02, pour l'heure — 15 (ou 03 pour le format 12 heures), pour la minute — 04, pour la seconde — 05.



Formatage d'une date en chaîne

La méthode Format() convertit un time.Time en chaîne selon un modèle donné.

package main

import ( "fmt" "time")

func main() { now := time.Now() fmt.Println("Format standard :", now.Format("2006-01-02 15:04:05")) fmt.Println("Format français :", now.Format("02.01.2006 15:04")) fmt.Println("Date uniquement :", now.Format("02 Jan 2006")) fmt.Println("Format 12 heures :", now.Format("03:04:05 PM"))}


Analyse d'une chaîne en date

La fonction time.Parse() convertit une chaîne en time.Time. Il est important que la chaîne corresponde au modèle.

package main

import ( "fmt" "time")

func main() { dateStr := "2025-03-15 14:30:00" layout := "2006-01-02 15:04:05" parsedTime, err := time.Parse(layout, dateStr) if err != nil { fmt.Println("Erreur d'analyse :", err) return } fmt.Println("Temps analysé :", parsedTime) fmt.Println("Jour de la semaine :", parsedTime.Weekday())}


Analyse avec fuseau horaire

Pour les chaînes avec fuseau horaire, utilisez time.ParseInLocation() ou indiquez le décalage dans le modèle (Z07:00).

package main

import ( "fmt" "tim

Blogs

Book Recommendations