首頁 > 後端開發 > Golang > 如何在 Golang 中使用自訂日期格式解組 time.Time 類型的 XML 欄位?

如何在 Golang 中使用自訂日期格式解組 time.Time 類型的 XML 欄位?

Mary-Kate Olsen
發布: 2024-11-07 22:53:03
原創
844 人瀏覽過

How to Unmarshal XML Fields of Type time.Time with Custom Date Formats in Golang?

在Golang 中解組time.Time 類型的XML 字段

在Golang 中使用REST API 進行XML 資料檢索時,它不是遇到不符合預設time.Time 解析格式的日期欄位的情況並不常見。當嘗試將檢索到的日期指派給 GO 結構中的 time.Time 欄位時,這種差異可能會導致解組失敗。

不幸的是,沒有直接的方法可以向解組函數明確指定所需的日期格式。但是,存在一種解決方法,涉及定義自訂結構來表示具有所需格式的日期欄位。

以下是實作它的方法:

  1. 建立一個嵌入的匿名 customTime 結構time.Time 類型。
  2. 在 customTime 結構中實作必要的 UnmarshalXML 方法來處理解群組過程。
  3. 自訂 UnmarshalXML 中的日期解析邏輯以適應使用的「yyyymmdd」日期格式API。
  4. 使用 customTime 結構體取代 Transaction 結構體中的原始 time.Time 欄位。

以下是示範此方法的範例程式碼:

type Transaction struct {
    // ... other fields
    DateEntered customTime `xml:"enterdate"` // Use customTime to handle specific date format
}

type customTime struct {
    time.Time
}

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

透過採用此方法,您可以克服在解組過程中指定日期格式的限制,並無縫處理不符合預設格式的日期。

以上是如何在 Golang 中使用自訂日期格式解組 time.Time 類型的 XML 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板