forked from mirror/cast
Add Unix epoch support to ToTimeE
This commit is contained in:
parent
24b6558033
commit
56a7ecbeb1
26
cast_test.go
26
cast_test.go
|
@ -185,6 +185,25 @@ func TestIndirectPointers(t *testing.T) {
|
|||
assert.Equal(t, ToInt(z), 13)
|
||||
}
|
||||
|
||||
func TestToTimeE(t *testing.T) {
|
||||
cases := []struct {
|
||||
input interface{}
|
||||
want time.Time
|
||||
}{
|
||||
{"1979-05-27T07:32:00Z", time.Date(1979, 5, 27, 7, 32, 0, 0, time.UTC)},
|
||||
{"2016-03-06 15:28:01", time.Date(2016, 3, 6, 15, 28, 1, 0, time.UTC)},
|
||||
{1472574600, time.Date(2016, 8, 30, 16, 30, 0, 0, time.UTC)},
|
||||
{int(1482597504), time.Date(2016, 12, 24, 16, 38, 24, 0, time.UTC)},
|
||||
{int32(1234567890), time.Date(2009, 2, 13, 23, 31, 30, 0, time.UTC)},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
v, err := ToTimeE(c.input)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, v.UTC(), c.want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestToDuration(t *testing.T) {
|
||||
var td time.Duration = 5
|
||||
tests := []struct {
|
||||
|
@ -212,10 +231,3 @@ func TestToDuration(t *testing.T) {
|
|||
assert.Equal(t, v.expected, ToDuration(v.input))
|
||||
}
|
||||
}
|
||||
|
||||
func TestStringToDate(t *testing.T) {
|
||||
d := "2016-03-06 15:28:01"
|
||||
format := "2006-01-02 15:04:05"
|
||||
v, _ := time.Parse(format, d)
|
||||
assert.Equal(t, ToTime(d), v)
|
||||
}
|
||||
|
|
12
caste.go
12
caste.go
|
@ -18,15 +18,21 @@ import (
|
|||
func ToTimeE(i interface{}) (tim time.Time, err error) {
|
||||
i = indirect(i)
|
||||
|
||||
switch s := i.(type) {
|
||||
switch v := i.(type) {
|
||||
case time.Time:
|
||||
return s, nil
|
||||
return v, nil
|
||||
case string:
|
||||
d, e := StringToDate(s)
|
||||
d, e := StringToDate(v)
|
||||
if e == nil {
|
||||
return d, nil
|
||||
}
|
||||
return time.Time{}, fmt.Errorf("Could not parse Date/Time format: %v\n", e)
|
||||
case int:
|
||||
return time.Unix(int64(v), 0), nil
|
||||
case int32:
|
||||
return time.Unix(int64(v), 0), nil
|
||||
case int64:
|
||||
return time.Unix(v, 0), nil
|
||||
default:
|
||||
return time.Time{}, fmt.Errorf("Unable to Cast %#v to Time\n", i)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue