Ich habe eine postgresql db mit den Spalten date und repeat_until als Zeitstempel mit Zeitzone. Die Beispieldaten haben ein zeitzonenspezifisches Format. Letzteres ist Winterzeit.Zeitzone Informationen aus Postgresql Zeitstempel in go behalten
2017-08-28 09:00:00+02
, 2017-12-31 23:00:00+01
Mit Schnur und time.time die erste gibt die Zeit in Bezug auf GMT + 0, den letzten Sekunden (nicht Unix-Zeitstempel).
import (
_ "github.com/lib/pq"
"fmt"
"github.com/gorilla/mux"
"github.com/jmoiron/sqlx"
"log"
"net/http"
"time"
)
type Event struct {
Date string
RepeatUntil time.Time `db:"repeat_until"`
}
event := Event{}
rows, _ := db.Queryx("select * from events order by date")
for rows.Next() {
err := rows.StructScan(&event)
if err != nil {
log.Fatalln(err)
}
fmt.Printf("%#v", event)
}
Date:"2017-08-28T07:00:00Z"
RepeatUntil:time.Time{sec:63650354400, nsec:0, loc:(*time.Location)(nil)}
Was ist der empfohlene Weg, Zeitzoneninformationen zu behalten? time.Time scheint offensichtlich, aber ich bin mir nicht sicher, wie es zu den Sekunden gekommen ist, die im Jahr 3986 in unixtime ist.
Ich benutze sqlx.
erhalten werden, was das Problem ist. Es behält die Zeitzone. https://play.golang.org/p/Lj_uxCts1R. Oh warte ... Ich sehe, dein Problem ist, wie 'sqlx' es analysiert. – RayfenWindspear
Haben Sie versucht, 'string' in Ihrer Struktur anstelle von' time.Time' zu verwenden und diese dann selbst mit dem Layout zu analysieren, wie in meinem Spielplatz Link? – RayfenWindspear
Ich beginne mich wirklich zu fragen, ob Sie eine alte Version des 'pq' Treibers haben und ein Update benötigen. Nach dem Code, den ich durchgesehen habe und den Testfällen, die ich gesehen habe (https://github.com/lib/pq/blob/e42267488fe361b9dc034be7a6bffef5b195bceb/encode_test.go#L191), sollte es kein Problem haben, Zeitzonen richtig zu behandeln. Ich schlage vor, dass Sie 'go get -u github.com/lib/pq' laufen lassen. – RayfenWindspear