Go XML Unmarshal 中的時間格式。時間欄位
在遇到以下日期欄位時,將 XML 資料解組到 Go 結構中有時會遇到挑戰非預設格式。本文解決了在不依賴字串轉換的情況下解析日期的問題。
考慮範例結構 Transaction,其中包含類型為 time.Time 的 DateEntered 欄位。傳回 XML 資料的 API 使用「yyyymmdd」日期格式,這與 time.Time 使用的預設格式不同。
不幸的是,time.Time 沒有實作 xml.Unmarshaler 接口,無法直接指定自訂日期格式。為了克服這個限制,可以使用匿名time.Time 欄位和自訂UnmarshalXML 實作建立自訂結構:
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 }
透過實作UnmarshalXML,customTime 類型可以處理自訂「yyyymmdd」日期格式並儲存父Transaction結構中的匿名time.Time 欄位中的解析值。
此方法可確保日期已解析並儲存在正確的位置time.Time 格式,無需手動字串轉換或依賴預設解析假設。
以上是如何在 Go 中將 XML 日期字串解組為 Time.Time 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!