web-dev-qa-db-fra.com

Convertir time.Time en chaîne

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")
70
A.D

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.

115
icza
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
}    
15
Hao

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)
}
1
firebitsbr

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
}
1
Vignesh Kumar