fix time parse layout (#2296)
Reviewed-on: https://gitea.com/xorm/xorm/pulls/2296 Co-authored-by: CyJaySong <cyjaysong@gmail.com> Co-committed-by: CyJaySong <cyjaysong@gmail.com>
This commit is contained in:
parent
f33221df74
commit
0b18440d73
|
@ -41,7 +41,7 @@ func String2Time(s string, originalLocation *time.Location, convertedLocation *t
|
||||||
dt = dt.In(convertedLocation)
|
dt = dt.In(convertedLocation)
|
||||||
return &dt, nil
|
return &dt, nil
|
||||||
} else if len(s) >= 21 && s[10] == 'T' && s[19] == '.' {
|
} else if len(s) >= 21 && s[10] == 'T' && s[19] == '.' {
|
||||||
dt, err := time.Parse(time.RFC3339, s)
|
dt, err := time.Parse(time.RFC3339Nano, s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,11 @@ package integrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
"xorm.io/xorm/convert"
|
||||||
|
|
||||||
"xorm.io/xorm/internal/utils"
|
"xorm.io/xorm/internal/utils"
|
||||||
|
|
||||||
|
@ -619,3 +621,59 @@ func TestTimestamp(t *testing.T) {
|
||||||
assert.EqualValues(t, formatTime(d3.InsertTime, 6), formatTime(d4.InsertTime, 6))
|
assert.EqualValues(t, formatTime(d3.InsertTime, 6), formatTime(d4.InsertTime, 6))
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestString2Time(t *testing.T) {
|
||||||
|
loc, err := time.LoadLocation("Asia/Shanghai")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
var timeTmp1 = time.Date(2023, 7, 14, 11, 30, 0, 0, loc)
|
||||||
|
var timeTmp2 = time.Date(2023, 7, 14, 0, 0, 0, 0, loc)
|
||||||
|
var time1StampStr = strconv.FormatInt(timeTmp1.Unix(), 10)
|
||||||
|
var timeStr = "0000-00-00 00:00:00"
|
||||||
|
dt, err := convert.String2Time(timeStr, time.Local, time.Local)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, dt.Nanosecond() == 0)
|
||||||
|
|
||||||
|
timeStr = "0001-01-01 00:00:00"
|
||||||
|
dt, err = convert.String2Time(timeStr, time.Local, time.Local)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, dt.Nanosecond() == 0)
|
||||||
|
|
||||||
|
timeStr = "2023-07-14 11:30:00"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp1.In(time.UTC).Equal(*dt))
|
||||||
|
|
||||||
|
timeStr = "2023-07-14T11:30:00Z"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp1.In(time.UTC).Equal(*dt))
|
||||||
|
|
||||||
|
timeStr = "2023-07-14T11:30:00+08:00"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp1.In(time.UTC).Equal(*dt))
|
||||||
|
|
||||||
|
timeStr = "2023-07-14T11:30:00.00000000+08:00"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp1.In(time.UTC).Equal(*dt))
|
||||||
|
|
||||||
|
timeStr = "0000-00-00"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, dt.Nanosecond() == 0)
|
||||||
|
|
||||||
|
timeStr = "0001-01-01"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, dt.Nanosecond() == 0)
|
||||||
|
|
||||||
|
timeStr = "2023-07-14"
|
||||||
|
dt, err = convert.String2Time(timeStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp2.In(time.UTC).Equal(*dt))
|
||||||
|
|
||||||
|
dt, err = convert.String2Time(time1StampStr, loc, time.UTC)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.True(t, timeTmp1.In(time.UTC).Equal(*dt))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue