Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahmarshal Rentetan Tarikh XML ke dalam Medan Time.Time dalam Go?

Bagaimana untuk Menyahmarshal Rentetan Tarikh XML ke dalam Medan Time.Time dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-11-11 08:14:03530semak imbas

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

Pemformatan Masa dalam Go XML Unmarshal for time.Time Fields

Menyahmarshall data XML ke dalam struct Go kadangkala menghadapi cabaran apabila menghadapi medan tarikh dengan format bukan lalai. Artikel ini menangani isu menghuraikan tarikh tanpa bergantung pada penukaran rentetan.

Pertimbangkan contoh struct Transaction, yang termasuk medan DateEntered masa jenis.Masa. API yang mengembalikan data XML menggunakan format tarikh "yyyymmdd", yang berbeza daripada format lalai yang digunakan oleh masa.Masa.

Malangnya, time.Time tidak melaksanakan antara muka xml.Unmarshaler, menghalang spesifikasi langsung daripada format tarikh tersuai. Untuk mengatasi had ini, struct tersuai boleh dibuat dengan masa tanpa nama. Medan masa dan pelaksanaan UnmarshalXML tersuai:

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
}

Dengan melaksanakan UnmarshalXML, jenis CustomTime boleh mengendalikan format tarikh "yyyymmdd" tersuai dan menyimpan nilai yang dihuraikan dalam masa tanpa nama. Medan masa dalam struct Transaksi induk.

Pendekatan ini memastikan tarikh dihuraikan dan disimpan dalam masa yang betul. Format masa tanpa memerlukan penukaran rentetan manual atau bergantung pada penghuraian lalai andaian.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Rentetan Tarikh XML ke dalam Medan Time.Time dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn