Wie entmarshaliere ich XML-Datumszeichenfolgen in Time.Time-Felder in Go?

Barbara Streisand
Freigeben: 2024-11-11 08:14:03
Original
492 Leute haben es durchsucht

How to Unmarshal XML Date Strings into Time.Time Fields in Go?

Zeitformatierung in Go XML Unmarshaling für time.Time-Felder

Das Unmarshaling von XML-Daten in Go-Strukturen kann manchmal auf Herausforderungen stoßen, wenn Datumsfelder mit auftauchen Nicht-Standardformate. Dieser Artikel befasst sich mit dem Problem des Parsens von Datumsangaben, ohne sich auf die String-Konvertierung zu verlassen.

Betrachten Sie die Beispielstruktur Transaction, die ein DateEntered-Feld vom Typ time.Time enthält. Die API, die die XML-Daten zurückgibt, verwendet ein Datumsformat „JJJJMMTT“, das sich vom Standardformat von time.Time unterscheidet.

Leider implementiert time.Time die xml.Unmarshaler-Schnittstelle nicht, was eine direkte Spezifikation verhindert eines benutzerdefinierten Datumsformats. Um diese Einschränkung zu überwinden, kann eine benutzerdefinierte Struktur mit einem anonymen time.Time-Feld und einer benutzerdefinierten UnmarshalXML-Implementierung erstellt werden:

type Transaction struct {
    // ...
    DateEntered     customTime     `xml:"enterdate"` // use your own type that satisfies UnmarshalXML
    // ...
}

type customTime struct {
    time.Time
}

func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
    const shortForm = "20060102" // yyyymmdd date format
    var v string
    d.DecodeElement(&v, &start)
    parse, err := time.Parse(shortForm, v)
    if err != nil {
        return err
    }
    *c = customTime{parse}
    return nil
}
Nach dem Login kopieren

Durch die Implementierung von UnmarshalXML kann der Typ „customTime“ das benutzerdefinierte Datumsformat „yyyymmdd“ verarbeiten und speichern der analysierte Wert im anonymen time.Time-Feld innerhalb der übergeordneten Transaktionsstruktur.

Dieser Ansatz stellt sicher, dass Datumsangaben im richtigen time.Time-Format analysiert und gespeichert werden, ohne dass eine manuelle Zeichenfolgenkonvertierung erforderlich ist oder man sich auf die Standardanalyse verlassen muss Annahmen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Datumszeichenfolgen in Time.Time-Felder in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage