diff --git a/tpl/template_funcs.go b/tpl/template_funcs.go index 53666b925..8b5b71a2c 100644 --- a/tpl/template_funcs.go +++ b/tpl/template_funcs.go @@ -112,6 +112,11 @@ func compareGetFloat(a interface{}, b interface{}) (float64, float64) { str := av.String() leftStr = &str } + case reflect.Struct: + switch av.Type() { + case timeType: + left = float64(timeUnix(av)) + } } bv := reflect.ValueOf(b) @@ -129,7 +134,11 @@ func compareGetFloat(a interface{}, b interface{}) (float64, float64) { str := bv.String() rightStr = &str } - + case reflect.Struct: + switch bv.Type() { + case timeType: + right = float64(timeUnix(bv)) + } } switch { diff --git a/tpl/template_funcs_test.go b/tpl/template_funcs_test.go index 67e23c030..9683e4595 100644 --- a/tpl/template_funcs_test.go +++ b/tpl/template_funcs_test.go @@ -5,6 +5,7 @@ import ( "encoding/base64" "errors" "fmt" + "github.com/spf13/cast" "html/template" "path" "reflect" @@ -81,6 +82,9 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b inte {"8", "5", 1}, {"5", "0001", 1}, {[]int{100, 99}, []int{1, 2, 3, 4}, -1}, + {cast.ToTime("2015-11-20"), cast.ToTime("2015-11-20"), 0}, + {cast.ToTime("2015-11-19"), cast.ToTime("2015-11-20"), -1}, + {cast.ToTime("2015-11-20"), cast.ToTime("2015-11-19"), 1}, } { result := funcUnderTest(this.left, this.right) success := false