Convertir l’époque Unix en chaîne à time.Time on Go

Je lis un fichier JSON contenant des dates Epix Unix, mais ce sont des chaînes dans le JSON. Dans Go, puis-je convertir une chaîne de caractères sous la forme “1490846400” en une heure de départ.

La réponse fournie par @ Ainar-G n’est pas erronée ou incorrecte, mais il est probable que la meilleure solution consiste à utiliser un désarchiveur JSON personnalisé:

type EpochTime time.Time func (et *EpochTime) UnmarshalJSON(data []byte) error { t := ssortingng.Trim(ssortingng(data), `"`) // Remove quote marks from around the JSON ssortingng sec, err := strconv.ParseInt(t, 10, 64) if err != nil { return err } epochTime := time.Unix(sec,0) *et = epochTime return nil } 

Ensuite, dans votre structure, remplacez time.Time par EpochTime :

 type SomeDocument struct { Timestamp EpochTime `json:"time"` // other fields } 

Il n’y a pas une telle fonction dans le paquetage time , mais il est facile d’écrire:

 func ssortingngToTime(s ssortingng) (time.Time, error) { sec, err := strconv.ParseInt(s, 10, 64) if err != nil { return time.Time{}, err } return time.Unix(sec, 0), nil } 

Terrain de jeux: https://play.golang.org/p/2h0Vd7plgk .