traduccion playground golang go time unix-timestamp

go - playground - Cómo analizar la marca de tiempo de Unix a tiempo.



golang time difference (5)

puede usar el tiempo directamente. Desvincular la función de tiempo que convierte la marca de tiempo de Unix a UTC

package main import ( "fmt" "time" ) func main() { unixTimeUTC:=time.Unix(1405544146, 0) //gives unix time stamp in utc unitTimeInRFC3339 :=unixTimeUTC.Format(time.RFC3339) // converts utc time to RFC3339 format fmt.Println("unix time stamp in UTC :--->",unixTimeUTC) fmt.Println("unix time stamp in unitTimeInRFC3339 format :->",unitTimeInRFC3339)

}

Salida

unix time stamp in UTC :---> 2014-07-16 20:55:46 +0000 UTC unix time stamp in unitTimeInRFC3339 format :----> 2014-07-16T20:55:46Z

check in Go Playground: https://play.golang.org/p/5FtRdnkxAd

Estoy tratando de analizar una timestamp Unix, pero salgo del error de rango. Eso realmente no tiene sentido para mí, porque el diseño es correcto (como en los documentos Go):

package main import "fmt" import "time" func main() { tm, err := time.Parse("1136239445", "1405544146") if err != nil{ panic(err) } fmt.Println(tm) }

Playground


Compartiendo algunas funciones que creé para las fechas:

Tenga en cuenta que quería obtener tiempo para una ubicación en particular (no solo la hora UTC). Si desea la hora UTC, simplemente elimine la variable loc y la llamada a la función .In (loc).

func GetTimeStamp() string { loc, _ := time.LoadLocation("America/Los_Angeles") t := time.Now().In(loc) return t.Format("20060102150405") } func GetTodaysDate() string { loc, _ := time.LoadLocation("America/Los_Angeles") current_time := time.Now().In(loc) return current_time.Format("2006-01-02") } func GetTodaysDateTime() string { loc, _ := time.LoadLocation("America/Los_Angeles") current_time := time.Now().In(loc) return current_time.Format("2006-01-02 15:04:05") } func GetTodaysDateTimeFormatted() string { loc, _ := time.LoadLocation("America/Los_Angeles") current_time := time.Now().In(loc) return current_time.Format("Jan 2, 2006 at 3:04 PM") } func GetTimeStampFromDate(dtformat string) string { form := "Jan 2, 2006 at 3:04 PM" t2, _ := time.Parse(form, dtformat) return t2.Format("20060102150405") }


La función time.Parse no hace marcas de tiempo Unix. En su lugar, puede usar strconv.ParseInt para analizar la cadena a int64 y crear la marca de tiempo con time.Unix :

package main import ( "fmt" "time" "strconv" ) func main() { i, err := strconv.ParseInt("1405544146", 10, 64) if err != nil { panic(err) } tm := time.Unix(i, 0) fmt.Println(tm) }

Salida:

2014-07-16 20:55:46 +0000 UTC

Área de juegos: http://play.golang.org/p/v_j6UIro7a

Editar:

Se cambió de strconv.Atoi a strconv.ParseInt para evitar desbordamientos int en sistemas de 32 bits.


Solo usa el time.Parse

ejemplo:

package main import ( "fmt" "time" ) func main() { fromString := "Wed, 6 Sep 2017 10:43:01 +0300" t, e := time.Parse("Mon, _2 Jan 2006 15:04:05 -0700", fromString) if e != nil { fmt.Printf("err: %s/n", e) } fmt.Printf("UTC time: %v/n", t.UTC()) }

Ejemplo de trabajo en play.golang.org .