it-swarm.com.de

Konvertiere time.Time in string

Ich versuche, ein paar Werte aus meiner Datenbank zu einem []string In Go hinzuzufügen. Einige davon sind Zeitstempel.

Ich erhalte den Fehler:

kann U.Created_date (Typ time.Time) nicht als Typzeichenfolge im Arrayelement verwenden

Kann ich time.Time In string konvertieren?

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

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

Sie können die Time.String() -Methode verwenden, um ein time.Time in ein string zu konvertieren. Dies verwendet die Formatzeichenfolge "2006-01-02 15:04:05.999999999 -0700 MST".

Wenn Sie ein anderes benutzerdefiniertes Format benötigen, können Sie Time.Format() verwenden. Um beispielsweise den Zeitstempel im Format yyyy-MM-dd HH:mm:ss Zu erhalten, verwenden Sie die Formatzeichenfolge "2006-01-02 15:04:05".

Beispiel:

t := time.Now()
fmt.Println(t.String())
fmt.Println(t.Format("2006-01-02 15:04:05"))

Ausgabe (versuchen Sie es auf dem Go Playground ):

2009-11-10 23:00:00 +0000 UTC
2009-11-10 23:00:00

Hinweis: Die Zeit auf dem Go-Spielplatz wird 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 bei Verwendung von Time.Format() als Layout string immer dieselbe Zeit übergeben müssen - die Referenz genannt zeitlich so formatiert, dass das Ergebnis formatiert werden soll. Dies ist dokumentiert unter Time.Format():

Format gibt eine Textdarstellung des gemäß Layout formatierten Zeitwerts zurück, der das Format definiert, indem angezeigt wird, wie die Referenzzeit definiert ist

Mon Jan 2 15:04:05 -0700 MST 2006

würde angezeigt, wenn es der Wert wäre; Es dient als Beispiel für die gewünschte Ausgabe. Die gleichen Anzeigeregeln werden dann auf den Zeitwert angewendet.

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

Go Playground 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

Finden Sie die einfache Lösung, um das Datums- und Uhrzeitformat in Go Lang zu erstellen. Hier finden Sie das Beispiel.

Paketlink: https://github.com/vigneshuvi/GoDateFormat .

Finden Sie die Plackholder: 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