Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menentukan Format Tarikh Tersuai Apabila Menyahmarshaling XML ke dalam Medan `time.Time` di Golang?

Bagaimana untuk Menentukan Format Tarikh Tersuai Apabila Menyahmarshaling XML ke dalam Medan `time.Time` di Golang?

Barbara Streisand
Lepaskan: 2024-11-09 08:47:02
asal
725 orang telah melayarinya

How to Specify a Custom Date Format When Unmarshaling XML into a `time.Time` Field in Golang?

Mengatasi Percanggahan Format Tarikh dalam Golang XML Unmarshal dengan masa.Masa

Mengambil semula data XML melalui REST APIs spesso memberikan cabaran apabila cuba unmarshal data ke dalam struktur Golang. Satu isu yang kerap timbul apabila format tarikh yang dikembalikan oleh API tidak sejajar dengan masa lalai.Format penghuraian masa, mengakibatkan kegagalan unmarshaling.

Dalam kes sedemikian, tergoda untuk menggunakan rentetan untuk mewakili medan datetime, tetapi mengekalkan jenis yang ditakrifkan dengan betul adalah lebih baik. Untuk menangani isu ini, soalan meneroka sama ada terdapat kaedah untuk menentukan format tarikh tersuai apabila menyahmarshaling ke dalam medan masa.

Menyahmarshaling Tersuai dengan xml.UnmarshalXML

Pakej pengekodan xml perpustakaan standard menawarkan penyelesaian melalui antara muka xml.Unmarshaler. Walau bagaimanapun, time.Time tidak melaksanakan antara muka ini, menghalang kami daripada menentukan format tarikh tersuai.

Untuk mengatasi had ini, kami boleh mentakrifkan jenis struktur tersuai baharu yang membungkus medan masa.Masa dan melaksanakan kami sendiri Kaedah UnmarshalXML. Kaedah ini akan menghuraikan rentetan tarikh XML menggunakan format yang kami kehendaki dan menetapkan masa asas. Nilai masa dengan sewajarnya.

Contoh Pelaksanaan

type Transaction struct {
    //...
    DateEntered customTime `xml:"enterdate"` // Use our custom type that implements 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
}
Salin selepas log masuk

Dengan menggunakan UnmarshalXML tersuai ini kaedah, kami boleh menentukan format tarikh kami sendiri dengan berkesan dan memastikan bahawa medan masa.Masa diisi dengan betul apabila menyahmarshaling data XML.

Nota Tambahan

  • Jika elemen XML menggunakan atribut untuk mewakili tarikh, anda boleh melaksanakan UnmarshalXMLAttr dengan cara yang sama.
  • Untuk rujukan lanjut, taman permainan Go yang disediakan menunjukkan pelaksanaan: http://play.golang.org/p/ EFXZNsjE4a

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Format Tarikh Tersuai Apabila Menyahmarshaling XML ke dalam Medan `time.Time` di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan