Add Unix epoch support to ToTimeE
diff --git a/cast_test.go b/cast_test.go
index 2e418ec..1312546 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -185,6 +185,25 @@
 	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 @@
 		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)
-}
diff --git a/caste.go b/caste.go
index 23f0fe8..1aaa1ff 100644
--- a/caste.go
+++ b/caste.go
@@ -18,15 +18,21 @@
 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)
 	}