Maison > développement back-end > Golang > le corps du texte

Comment éliminer les formats datetime incohérents dans Go ?

Barbara Streisand
Libérer: 2024-11-05 05:31:01
original
744 Les gens l'ont consulté

How to Unmarshal Inconsistent Datetime Formats in Go?

Démarrer les formats de date et d'heure incohérents

Lors du traitement des données JSON, la décompression des dates et heures peut entraîner des incohérences en raison des différents formats de décalage de fuseau horaire. Bien que le mécanisme d'analyse standard de Go attend des décalages de fuseau horaire au format 02h00, certaines données peuvent contenir des formats incorrects tels que 0200.

Pour résoudre ce problème, Go fournit une méthode de démarshaling personnalisée pour gérer les formats de fuseau horaire corrects et incorrects. Voici une approche révisée :

type MyTime struct {
    time.Time
}

func (self *MyTime) UnmarshalJSON(b []byte) (err error) {
    s := string(b)

    // Remove quotation marks
    s = s[1:len(s)-1]

    // Attempt to parse using RFC3339Nano format
    t, err := time.Parse(time.RFC3339Nano, s)
    if err != nil {
        // If parsing fails, try custom format without ':'
        t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s)
    }
    self.Time = t
    return
}

type Test struct {
    Time MyTime `json:"time"`
}
Copier après la connexion

Dans cette méthode de démarshaling personnalisée (UnmarshalJSON), nous :

  1. Analysons à l'aide du format standard RFC3339Nano.
  2. Si l'analyse échoue en raison d'un format de décalage de fuseau horaire incorrect, nous analysons en utilisant un format modifié ("2006-01-02T15:04:05.999999999Z0700") qui insère un ':' dans le décalage de fuseau horaire.

Cette approche garantit que les chaînes datetime correctes et mal formatées soient analysées correctement.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal