私はタイムゾーン付きタイムスタンプとしてdateとrepeat_untilという列を持つpostgresql dbを持っています。サンプルの日付には、タイムゾーン固有の形式があります。後者は冬の時間です。postgresqlタイムスタンプからのタイムゾーン情報を保持
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)}
タイムゾーン情報を保持するための推奨方法は何ですか? timeTimeは明らかですが、私はunixtimeで3986年の秒にどのようになったのかよくわかりません。
私はsqlxを使用しています。
することによって得ることができます。タイムゾーンは保持されます。 https://play.golang.org/p/Lj_uxCts1R。ああ待って...私は、あなたの苦境は 'sqlx'がそれをどのように解析しているかである。 – RayfenWindspear
'time.Time'の代わりに' string'を使って構造体にしようとしましたが、私の遊び場のリンクのようにレイアウトでそれを解析していますか? – RayfenWindspear
'pq'ドライバの古いバージョンがあり、アップデートが必要なのかどうか疑問に思っています。私が見たコードと、私が見たテストケース(https://github.com/lib/pq/blob/e42267488fe361b9dc034be7a6bffef5b195bceb/encode_test.go#L191)によると、TimeZonesを適切に処理する問題はないはずです。 'get get -u github.com/lib/pq'を実行することをお勧めします。 – RayfenWindspear