Skip to content

Commit 60749f4

Browse files
committed
feat(time): support RFC3339 dates
1 parent b8679a4 commit 60749f4

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

time/time.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ func (t *Time) MarshalJSON() ([]byte, error) {
2727
// UnmarshalText implements the encoding.TextUnmarshaler interface.
2828
// The time is expected to be in Deis' datetime format.
2929
func (t *Time) UnmarshalText(data []byte) error {
30-
tt, err := time.Parse(DeisDatetimeFormat, string(data))
30+
tt, err := time.Parse(time.RFC3339, string(data))
3131
if _, ok := err.(*time.ParseError); ok {
32-
tt, err = time.Parse(PyOpenSSLTimeDateTimeFormat, string(data))
32+
tt, err = time.Parse(DeisDatetimeFormat, string(data))
33+
if _, ok := err.(*time.ParseError); ok {
34+
tt, err = time.Parse(PyOpenSSLTimeDateTimeFormat, string(data))
35+
}
3336
}
3437
*t = Time{&tt}
3538
return err
@@ -39,9 +42,12 @@ func (t *Time) UnmarshalText(data []byte) error {
3942
// The time is expected to be a quoted string in Deis' datetime format.
4043
func (t *Time) UnmarshalJSON(data []byte) error {
4144
// Fractional seconds are handled implicitly by Parse.
42-
tt, err := time.Parse(`"`+DeisDatetimeFormat+`"`, string(data))
45+
tt, err := time.Parse(`"`+time.RFC3339+`"`, string(data))
4346
if _, ok := err.(*time.ParseError); ok {
44-
tt, err = time.Parse(`"`+PyOpenSSLTimeDateTimeFormat+`"`, string(data))
47+
tt, err = time.Parse(`"`+DeisDatetimeFormat+`"`, string(data))
48+
if _, ok := err.(*time.ParseError); ok {
49+
tt, err = time.Parse(`"`+PyOpenSSLTimeDateTimeFormat+`"`, string(data))
50+
}
4551
}
4652
*t = Time{&tt}
4753
return err

time/time_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ func TestUnMarshalText(t *testing.T) {
1212
"2006-01-02T15:04:05MST",
1313
"2006-01-02T15:04:05UTC",
1414
"2006-01-02T15:04:05PST",
15+
"2006-01-02T15:04:05Z",
1516
}
1617
for _, goodTime := range standardTimeFormats {
1718
if dummyTime.UnmarshalText([]byte(goodTime)) != nil {

0 commit comments

Comments
 (0)