我有一個postgresql數據庫,其中列date和repeat_until作爲帶時區的時間戳。示例日期具有時區特定的格式。後者是冬季時間。保留來自postgresql時間戳的時區信息go
2017-08-28 09:00:00+02
,2017-12-31 23:00:00+01
使用串和了time.time第一賦予相對於GMT + 0,後者秒(未Unix時間戳)的時間。
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)}
什麼是保留的時區信息推薦的方法是什麼?時間似乎很明顯,但我不確定它是如何到達unixtime 3986年的秒數的。我正在使用sqlx。
獲得我看不出有什麼問題。它保留了時區。 https://play.golang.org/p/Lj_uxCts1R。哦,等等......我明白了,你的問題在於'sqlx'如何解析它。 – RayfenWindspear
您是否嘗試過在結構中使用'string'而不是'time.Time',然後使用佈局來解析它,就像在我的操場鏈接中一樣? – RayfenWindspear
我實際上開始懷疑你是否可能有一箇舊版本的'pq'驅動程序,需要更新。根據我瀏覽過的代碼和我見過的測試用例(https://github.com/lib/pq/blob/e42267488fe361b9dc034be7a6bffef5b195bceb/encode_test.go#L191),正確處理TimeZones應該沒有問題。我建議你運行'go get -u github.com/lib/pq' – RayfenWindspear