func (a *Action) AfterSet(colName string, _ xorm.Cell) {
switch colName {
case "created":
- now := time.Now()
- a.Created = a.Created.Add(now.Sub(now.UTC()))
+ a.Created = regulateTimeZone(a.Created)
}
}
log.Error(3, "GetUserByID[%d]: %v", i.ID, err)
}
case "created":
- now := time.Now()
- i.Created = i.Created.Add(now.Sub(now.UTC()))
+ i.Created = regulateTimeZone(i.Created)
}
}
}
}
case "created":
- now := time.Now()
- c.Created = c.Created.Add(now.Sub(now.UTC()))
+ c.Created = regulateTimeZone(c.Created)
}
}
"os"
"path"
"strings"
+ "time"
+ "github.com/Unknwon/com"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/core"
"github.com/go-xorm/xorm"
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{}