diff options
author | Unknwon <u@gogs.io> | 2015-08-20 00:56:12 +0800 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-08-20 00:56:12 +0800 |
commit | f114f7874303d249b2956c894b1a90b042430acf (patch) | |
tree | 63ea82c0a97dbb884de1f09620524f8d6c98f224 /models/models.go | |
parent | 6c2536b89c30ef1c99752abd50fdb3b5d2cd0691 (diff) | |
download | gitea-f114f7874303d249b2956c894b1a90b042430acf.tar.gz gitea-f114f7874303d249b2956c894b1a90b042430acf.zip |
fix timezone!
Diffstat (limited to 'models/models.go')
-rw-r--r-- | models/models.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/models/models.go b/models/models.go index e06d5cf88e..7d02bb9565 100644 --- a/models/models.go +++ b/models/models.go @@ -10,7 +10,9 @@ import ( "os" "path" "strings" + "time" + "github.com/Unknwon/com" _ "github.com/go-sql-driver/mysql" "github.com/go-xorm/core" "github.com/go-xorm/xorm" @@ -40,6 +42,25 @@ func sessionRelease(sess *xorm.Session) { sess.Close() } +// Note: get back time.Time from database Go sees it at UTC where they are really Local. +// So this function makes correct timezone offset. +func regulateTimeZone(t time.Time) time.Time { + if setting.UseSQLite3 { + return t + } + + zone := t.Local().Format("-0700") + if len(zone) != 5 { + return t + } + offset := com.StrTo(zone[2:3]).MustInt() + + if zone[0] == '-' { + return t.Add(time.Duration(offset) * time.Hour) + } + return t.Add(-1 * time.Duration(offset) * time.Hour) +} + var ( x *xorm.Engine tables []interface{} |