Estoy tratando de agregar algunos valores de mi base de datos a un []string
in Go. Algunas de estas son marcas de tiempo.
Me sale el error:
no se puede usar U.Created_date (tipo time.Time) como tipo cadena en el elemento de matriz
¿Puedo convertirme time.Time
a string
?
type UsersSession struct {
Userid int
Timestamp time.Time
Created_date time.Time
}
type Users struct {
Name string
Email string
Country string
Created_date time.Time
Id int
Hash string
IP string
}
-
var usersArray = [][]string{}
rows, err := db.Query("SELECT u.id, u.hash, u.name, u.email, u.country, u.IP, u.created_date, us.timestamp, us.created_date FROM usersSession AS us LEFT JOIN users AS u ON u.id = us.userid WHERE us.timestamp + interval 30 minute >= now()")
U := Users{}
US := UsersSession{}
for rows.Next() {
err = rows.Scan(&U.Id, &U.Hash, &U.Name, &U.Email, &U.Country, &U.IP, &U.Created_date, &US.Timestamp, &US.Created_date)
checkErr(err)
userid_string := strconv.Itoa(U.Id)
user := []string{userid_string, U.Hash, U.Name, U.Email, U.Country, U.IP, U.Created_date, US.Timestamp, US.Created_date}
// -------------
// ^ this is where the error occurs
// cannot use U.Created_date (type time.Time) as type string in array element (for US.Created_date and US.Timestamp aswell)
// -------------
usersArray = append(usersArray, user)
log.Print("usersArray: ", usersArray)
}
EDITAR
Agregué lo siguiente. Funciona ahora, gracias.
userCreatedDate := U.Created_date.Format("2006-01-02 15:04:05")
userSessionCreatedDate := US.Created_date.Format("2006-01-02 15:04:05")
userSessionTimestamp := US.Timestamp.Format("2006-01-02 15:04:05")
Respuestas:
Puede utilizar el
Time.String()
método para convertir untime.Time
en unstring
. Esto usa la cadena de formato"2006-01-02 15:04:05.999999999 -0700 MST"
.Si necesita otro formato personalizado, puede usar
Time.Format()
. Por ejemplo, para obtener la marca de tiempo en el formato deyyyy-MM-dd HH:mm:ss
use la cadena de formato"2006-01-02 15:04:05"
.Ejemplo:
Salida (pruébelo en Go Playground ):
Nota: el tiempo en Go Playground siempre se establece en el valor que se muestra arriba. Ejecútelo localmente para ver la fecha / hora actual.
También tenga en cuenta que al utilizar
Time.Format()
, como diseñostring
, siempre debe pasar el mismo tiempo, llamado tiempo de referencia , formateado de la manera que desee que se formatee el resultado. Esto está documentado enTime.Format()
:fuente
Mon Jan 2 15:04:05 -0700 MST 2006
y poner esta hora en el formato que desee. Go comprenderá el formato si lo pasó con este valor. No puede utilizar ningún otro valor de tiempo. Me tomó un tiempo resolver esto y pensé en agregarlo como comentariofuente
Ir al patio de juegos http://play.golang.org/p/DN5Py5MxaB
fuente
Encuentre la solución simple para convertir el formato de fecha y hora en Go Lang. Encuentre el ejemplo a continuación.
Enlace del paquete: https://github.com/vigneshuvi/GoDateFormat .
Encuentre los plackholder: https://medium.com/@Martynas/formatting-date-and-time-in-golang-5816112bf098
fuente
fuente