У меня есть время формата 2016-06-16 22:21:00
в XML-документе.Golang unmarshall mysql формат времени времени. Время
Я хочу разобрать время с Голаном.
type Price struct {
Instrument string `xml:"Instrument"`
Bid float32 `xml:"Bid"`
Ask float32 `xml:"Ask"`
Updated time.Time `xml:"Updated"`
}
type Prices []Price
var p Prices
err := xml.Unmarshal(body, &p)
if err != nil {
log.Panicln(err)
}
Моя ошибка выхода выглядит следующим образом:
panic: parsing time "2016-06-16 20:59:57" as "2006-01-02T15:04:05Z07:00": cannot parse " 20:59:57" as "T"
Как распаковать в MySQL отформатированный DATETIME строку как time.Time
?
Я прочитал, что мне нужно создать новое пользовательское время, которое реализует time.Time
.
type customTime struct {
time.Time
}
func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
const shortForm = "2016-12-10 01:00:00" // yyyy-mm-dd hh:ii:ss 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
}
Но когда я это сделаю, я получаю следующее сообщение об ошибке.
panic: parsing time "2016-06-16 20:59:57": month out of range
Я считаю, что вы хотите 'const shortForm =" 2006-01-02 15:04:05 ". – smarx
@smarx - Отличное спасибо. Я не понимаю, почему ваш «shortForm» работает, а у меня нет. Если вы напишете ответ с некоторым объяснением - я буду отмечать как правильный. – Gravy