Convertir marca de tiempo como cadena [duplicada]

Dec 07 2020

Quiero obtener una marca de tiempo como cadena. Si utilizo la stringconversión, no obtengo ningún error, pero la salida no es legible. Más tarde, lo quiero como parte de un nombre de archivo. Parece un signo de interrogación para, por ejemplo, Encontré algunos ejemplos como este:https://play.golang.org/p/bq2h3h0YKpno me resuelve completamente el problema. Gracias

now := time.Now()      // current local time
sec := now.Unix()      // number of seconds since January 1, 1970 UTC
fmt.Println(string(sec))

¿Cómo puedo obtener la marca de tiempo como cadena?

Respuestas

2 Gealber Dec 07 2020 at 05:52

Algo como esto funciona para mi

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    now := time.Now()
    unix := now.Unix()
    fmt.Println(strconv.FormatInt(unix, 10))
}
1 Jens Dec 07 2020 at 05:51

Aquí hay dos ejemplos de cómo puede convertir una marca de tiempo de Unix en una cadena.

El primer ejemplo ( s1) usa el strconvpaquete y su función FormatInt. El segundo ejemplo ( s2) usa el fmtpaquete ( documentación ) y su función Sprintf.

Personalmente, la Sprintfopción me gusta más desde el punto de vista estético. Todavía no he comprobado el rendimiento.

package main

import "fmt"
import "time"
import "strconv"

func main() {
    t := time.Now().Unix() // t is of type int64
    
    // use strconv and FormatInt with base 10 to convert the int64 to string
    s1 := strconv.FormatInt(t, 10)
    fmt.Println(s1)
    
    // Use Sprintf to create a string with format:
    s2 := fmt.Sprintf("%d", t)
    fmt.Println(s2)
}

Zona de juegos de Golang: https://play.golang.org/p/jk_xHYK_5Vu