Ich versuche, einige Werte aus meiner Datenbank zu einem []string
in Go hinzuzufügen . Einige davon sind Zeitstempel.
Ich bekomme den Fehler:
U.Created_date (Typ time.Time) kann nicht als Typzeichenfolge im Array-Element verwendet werden
Kann ich konvertieren time.Time
zu 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)
}
BEARBEITEN
Ich habe folgendes hinzugefügt. Es funktioniert jetzt, danke.
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")
Antworten:
Sie können die Verwendung
Time.String()
Methode ein konvertierentime.Time
zu einemstring
. Dies verwendet die Formatzeichenfolge"2006-01-02 15:04:05.999999999 -0700 MST"
.Wenn Sie ein anderes benutzerdefiniertes Format benötigen, können Sie es verwenden
Time.Format()
. Um beispielsweise den Zeitstempel im Format deryyyy-MM-dd HH:mm:ss
Verwendung zu erhalten, verwenden Sie die Formatzeichenfolge"2006-01-02 15:04:05"
.Beispiel:
Ausgabe (versuchen Sie es auf dem Go-Spielplatz ):
Hinweis: Die Zeit auf dem Go-Spielplatz ist immer auf den oben angegebenen Wert eingestellt. Führen Sie es lokal aus, um das aktuelle Datum und die aktuelle Uhrzeit anzuzeigen.
Beachten Sie auch, dass Sie
Time.Format()
als Layoutstring
immer dieselbe Zeit verwenden müssen - die Referenzzeit genannt -, die so formatiert ist, dass das Ergebnis formatiert werden soll. Dies ist dokumentiert unterTime.Format()
:quelle
Mon Jan 2 15:04:05 -0700 MST 2006
und diese Zeit in das gewünschte Format eingeben. Go wird das Format verstehen, wenn Sie es mit diesem Wert übergeben haben. Sie können keinen anderen Zeitwert verwenden. Ich brauchte einige Zeit, um das herauszufinden und dachte daran, es als Kommentar hinzuzufügenquelle
Gehen Sie zum Spielplatz http://play.golang.org/p/DN5Py5MxaB
quelle
Die einfache Lösung zum Erstellen des Datums- und Uhrzeitformats finden Sie in Go Lang. Das folgende Beispiel finden Sie unten.
Paketlink: https://github.com/vigneshuvi/GoDateFormat .
Bitte finden Sie die Plackhalter: https://medium.com/@Martynas/formatting-date-and-time-in-golang-5816112bf098
quelle
quelle