Signed-off-by: 商讯在线 <swhbox@foxmail.com>
This commit is contained in:
商讯在线 2014-04-16 20:56:04 +08:00
parent e8c0ff31b3
commit a4876ffec2
2 changed files with 19 additions and 7 deletions

View File

@ -1086,6 +1086,18 @@ func (engine *Engine) TZTime(t time.Time) (r time.Time) {
return
}
func (engine *Engine) TZLocation() (r *time.Location) {
switch engine.TimeZone {
case "Local", "L":
r = time.Local
case "UTC", "U":
fallthrough
default:
r = time.UTC
}
return
}
func (engine *Engine) NowTime(sqlTypeName string) interface{} {
t := time.Now()
return engine.FormatTime(sqlTypeName, t)

View File

@ -1930,17 +1930,17 @@ func (session *Session) byte2Time(col *Column, data []byte) (outTime time.Time,
x = time.Unix(0, sd)
}
} else if len(sdata) > 19 {
x, err = time.Parse(time.RFC3339Nano, sdata)
x, err = time.ParseInLocation(time.RFC3339Nano, sdata, session.Engine.TZLocation())
if err != nil {
x, err = time.Parse("2006-01-02 15:04:05.999999999", sdata)
x, err = time.ParseInLocation("2006-01-02 15:04:05.999999999", sdata, session.Engine.TZLocation())
}
if err != nil {
x, err = time.Parse("2006-01-02 15:04:05.9999999 Z07:00", sdata)
x, err = time.ParseInLocation("2006-01-02 15:04:05.9999999 Z07:00", sdata, session.Engine.TZLocation())
}
} else if len(sdata) == 19 {
x, err = time.Parse("2006-01-02 15:04:05", sdata)
x, err = time.ParseInLocation("2006-01-02 15:04:05", sdata, session.Engine.TZLocation())
} else if len(sdata) == 10 && sdata[4] == '-' && sdata[7] == '-' {
x, err = time.Parse("2006-01-02", sdata)
x, err = time.ParseInLocation("2006-01-02", sdata, session.Engine.TZLocation())
} else if col.SQLType.Name == Time {
if strings.Contains(sdata, " ") {
ssd := strings.Split(sdata, " ")
@ -1955,7 +1955,7 @@ func (session *Session) byte2Time(col *Column, data []byte) (outTime time.Time,
//fmt.Println(sdata)
st := fmt.Sprintf("2006-01-02 %v", sdata)
x, err = time.Parse("2006-01-02 15:04:05", st)
x, err = time.ParseInLocation("2006-01-02 15:04:05", st, session.Engine.TZLocation())
} else {
outErr = errors.New(fmt.Sprintf("unsupported time format %v", sdata))
return
@ -1964,7 +1964,7 @@ func (session *Session) byte2Time(col *Column, data []byte) (outTime time.Time,
outErr = errors.New(fmt.Sprintf("unsupported time format %v: %v", sdata, err))
return
}
outTime = session.Engine.TZTime(x)
outTime = x
return
}