J'essaie d'ajouter des valeurs de ma base de données à un []string
dans Go. Certains d'entre eux sont des horodatages.
Je reçois l'erreur:
ne peut pas utiliser U.Created_date (type time.Time) comme chaîne de type dans un élément de tableau
Puis-je convertir time.Time
en 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)
}
EDIT
J'ai ajouté le suivant. Cela fonctionne maintenant, merci.
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")
Vous pouvez utiliser la méthode Time.String()
pour convertir un time.Time
en un string
. Ceci utilise la chaîne de formatage _"2006-01-02 15:04:05.999999999 -0700 MST"
_.
Si vous avez besoin d'un autre format personnalisé, vous pouvez utiliser Time.Format()
. Par exemple, pour obtenir l’horodatage au format _yyyy-MM-dd HH:mm:ss
_, utilisez la chaîne de formatage _"2006-01-02 15:04:05"
_.
Exemple:
_t := time.Now()
fmt.Println(t.String())
fmt.Println(t.Format("2006-01-02 15:04:05"))
_
Sortie (essayez-le sur le Go Playground ):
_2009-11-10 23:00:00 +0000 UTC
2009-11-10 23:00:00
_
Remarque: l'heure sur le terrain de jeu est toujours définie sur la valeur indiquée ci-dessus. Exécutez-le localement pour voir la date et l'heure actuelles.
Notez également que si vous utilisez Time.Format()
, en tant que modèle string
, vous devez toujours passer le même temps, appelé la référence - formatée de manière vous voulez que le résultat soit formaté. Ceci est documenté à Time.Format()
:
Format renvoie une représentation textuelle de la valeur temporelle formatée en fonction de la mise en page, qui définit le format en montrant comment le temps de référence, défini comme étant
_Mon Jan 2 15:04:05 -0700 MST 2006
_serait affiché s'il s'agissait de la valeur; il sert d'exemple de la sortie souhaitée. Les mêmes règles d'affichage seront alors appliquées à la valeur temporelle.
package main
import (
"fmt"
"time"
)
// @link https://golang.org/pkg/time/
func main() {
//caution : format string is `2006-01-02 15:04:05.000000000`
current := time.Now()
fmt.Println("Origin : ", current.String())
// Origin : 2016-09-02 15:53:07.159994437 +0800 CST
fmt.Println("mm-dd-yyyy : ", current.Format("01-02-2006"))
// mm-dd-yyyy : 09-02-2016
fmt.Println("yyyy-mm-dd : ", current.Format("2006-01-02"))
// yyyy-mm-dd : 2016-09-02
// separated by .
fmt.Println("yyyy.mm.dd : ", current.Format("2006.01.02"))
// yyyy.mm.dd : 2016.09.02
fmt.Println("yyyy-mm-dd HH:mm:ss : ", current.Format("2006-01-02 15:04:05"))
// yyyy-mm-dd HH:mm:ss : 2016-09-02 15:53:07
// StampMicro
fmt.Println("yyyy-mm-dd HH:mm:ss: ", current.Format("2006-01-02 15:04:05.000000"))
// yyyy-mm-dd HH:mm:ss: 2016-09-02 15:53:07.159994
//StampNano
fmt.Println("yyyy-mm-dd HH:mm:ss: ", current.Format("2006-01-02 15:04:05.000000000"))
// yyyy-mm-dd HH:mm:ss: 2016-09-02 15:53:07.159994437
}
Aller au terrain de jeu http://play.golang.org/p/DN5Py5MxaB
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
// The Time type implements the Stringer interface -- it
// has a String() method which gets called automatically by
// functions like Printf().
fmt.Printf("%s\n", t)
// See the Constants section for more formats
// http://golang.org/pkg/time/#Time.Format
formatedTime := t.Format(time.RFC1123)
fmt.Println(formatedTime)
}
Trouvez la solution simple pour convertir le format de date et heure dans Go Lang. Veuillez trouver l'exemple ci-dessous.
Lien vers le package: https://github.com/vigneshuvi/GoDateFormat .
Veuillez trouver les détenteurs de la plaquette: https://medium.com/@Martynas/formatting-date-and-time-in-golang-5816112bf098
package main
// Import Package
import (
"fmt"
"time"
"github.com/vigneshuvi/GoDateFormat"
)
func main() {
fmt.Println("Go Date Format(Today - 'yyyy-MM-dd HH:mm:ss Z'): ", GetToday(GoDateFormat.ConvertFormat("yyyy-MM-dd HH:mm:ss Z")))
fmt.Println("Go Date Format(Today - 'yyyy-MMM-dd'): ", GetToday(GoDateFormat.ConvertFormat("yyyy-MMM-dd")))
fmt.Println("Go Time Format(NOW - 'HH:MM:SS'): ", GetToday(GoDateFormat.ConvertFormat("HH:MM:SS")))
fmt.Println("Go Time Format(NOW - 'HH:MM:SS tt'): ", GetToday(GoDateFormat.ConvertFormat("HH:MM:SS tt")))
}
func GetToday(format string) (todayString string){
today := time.Now()
todayString = today.Format(format);
return
}