Maison >développement back-end >Golang >Comment analyser correctement un horodatage dans la fonction « time.Parse » de Go ?

Comment analyser correctement un horodatage dans la fonction « time.Parse » de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 07:44:13281parcourir

How to Correctly Parse a Timestamp in Go's `time.Parse` Function?

Analyse de date dans Go

Lors de la tentative d'analyse d'un horodatage au format '2011-01-19 22:15', qui est Couramment utilisé par tar, les développeurs peuvent rencontrer des difficultés lors de l'utilisation de la fonction time.Parse. Cet article cherche à fournir une solution à ce problème.

L'extrait de code suivant illustre la tentative infructueuse d'analyser l'horodatage à l'aide de time.Parse :

package main

import (
    "fmt"
    "time"
)

func main() {
    var time, error = time.Parse("2011-01-19 22:15", "2011-01-19 22:15")
    if error != nil {
        fmt.Println(error.String())
        return
    }
    fmt.Println(time)
}

Ce code échoue avec le message d'erreur "'heure d'analyse "2011-01-19 22:15": mois hors plage'".

La solution réside dans la compréhension de la syntaxe et de la sémantique de time.Parse. Comme spécifié dans la documentation du package d'heure Go, la disposition par défaut utilisée dans time.Parse est basée sur le format d'heure Unix standard :

"Lun 2 janvier 15:04:05 MST 2006 (MST est GMT-0700) "

où :

  • Lun, 2, 15, 04 janvier 05 sont les valeurs correspondantes pour le mois, le jour, le jour du mois, l'heure, la minute et la seconde
  • MST est le décalage du fuseau horaire
  • 2006 est l'année

Pour définir une mise en page personnalisée, les développeurs doivent déterminer comment l'heure standard apparaîtra dans le format souhaité. Par exemple, pour analyser l'horodatage « 2011-01-19 22:15 », l'extrait suivant peut être utilisé :

package main

import (
    "fmt"
    "time"
)

func main() {
    t, err := time.Parse("2006-01-02 15:04", "2011-01-19 22:15")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(time.SecondsToUTC(t.Seconds()))
}

Ici, nous avons spécifié une chaîne de mise en page personnalisée "2006-01-02 15 :04" pour correspondre à l'horodatage d'entrée. Le résultat est ensuite imprimé au format horaire Unix.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn