Merge pull request #185 from emidander/Improved-date-format
Added pretty printing for time.Time.
diff --git a/format/format.go b/format/format.go
index 5cd89bc..fde341f 100644
--- a/format/format.go
+++ b/format/format.go
@@ -40,6 +40,7 @@
}
var contextType = reflect.TypeOf((*Ctx)(nil)).Elem()
+var timeType = reflect.TypeOf(time.Time{})
//The default indentation string emitted by the format package
var Indent = " "
@@ -179,6 +180,10 @@
case reflect.Map:
return formatMap(value, indentation)
case reflect.Struct:
+ if value.Type() == timeType {
+ t, _ := value.Interface().(time.Time)
+ return t.Format(time.RFC3339Nano)
+ }
return formatStruct(value, indentation)
case reflect.Interface:
return formatValue(value.Elem(), indentation)
diff --git a/format/format_test.go b/format/format_test.go
index 4d4b36c..a27cea2 100644
--- a/format/format_test.go
+++ b/format/format_test.go
@@ -380,6 +380,13 @@
Ω(Object(s, 1)).Should(matchRegexp(`format_test\.ComplexStruct`, expected))
})
})
+
+ Describe("formatting times", func() {
+ It("should format time as RFC3339", func() {
+ t := time.Date(2016, 10, 31, 9, 57, 23, 12345, time.UTC)
+ Ω(Object(t, 1)).Should(match("time.Time", `2016-10-31T09:57:23.000012345Z`))
+ })
+ })
})
Describe("Handling unexported fields in structs", func() {