diff --git a/gormx.go b/gormx.go index 8a6292a..61a5022 100644 --- a/gormx.go +++ b/gormx.go @@ -25,12 +25,14 @@ func NewGorm(opts ...Option) *gorm.DB { panic("mysql is not supported") } - dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=%s", defaultOpts.Mysql.User, defaultOpts.Mysql.Password, defaultOpts.Mysql.Host, defaultOpts.Mysql.Port, - defaultOpts.Mysql.Database) + defaultOpts.Mysql.Database, + defaultOpts.Loc, + ) dialector = mysql.Open(dsn) } else if defaultOpts.Db == "sqlite" { diff --git a/options.go b/options.go index a4720ae..45e0954 100644 --- a/options.go +++ b/options.go @@ -6,6 +6,7 @@ type clientOptions struct { Sqlite *SqliteOptions Prefix string // 表名前缀,`Article` 的表名应该是 `it_articles` SingularTable bool // 使用单数表名,启用该选项,此时,`Article` 的表名应该是 `it_article` + Loc string // 时区设置 "Local" "Asia/Shanghai" } type MysqlOptions struct { @@ -23,6 +24,7 @@ type SqliteOptions struct { func defaultOptions() clientOptions { return clientOptions{ SingularTable: true, + Loc: "Local", } } @@ -57,10 +59,15 @@ func SetSqlite(dbPath string) Option { } } - // 表名前缀 func SetTablePrefix(perfix string) Option { return func(o *clientOptions) { o.Prefix = perfix } } + +func SetLoc(loc string) Option { + return func(o *clientOptions) { + o.Loc = loc + } +}