From 33ad15a3c75bbaa8b4d2e1e007e5778bbedafa5e Mon Sep 17 00:00:00 2001 From: Aaron Raddon Date: Thu, 16 Apr 2015 11:37:50 -0700 Subject: [PATCH] add golang native format --- parseany.go | 7 +++++++ parseany_test.go | 9 ++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/parseany.go b/parseany.go index a654bcb..671f5f2 100644 --- a/parseany.go +++ b/parseany.go @@ -105,6 +105,7 @@ iterRunes: // 2014-05-11 08:20:13,787 // 2014-04-26 05:24:37 PM // 2014-12-16 06:20:00 UTC + // 2015-02-18 00:12:00 +0000 UTC switch r { case 'A', 'P': if len(datestr) == len("2014-04-26 03:24:37 PM") { @@ -373,6 +374,12 @@ iterRunes: } else { return time.Time{}, err } + } else if len(datestr) == len("2015-02-18 00:12:00 +0000 UTC") { + if t, err := time.Parse("2006-01-02 15:04:05 +0000 UTC", datestr); err == nil { + return t, nil + } else { + return time.Time{}, err + } } case ST_DIGITSLASH: // starts digit then slash 02/ (but nothing else) // 3/1/2014 diff --git a/parseany_test.go b/parseany_test.go index 5b8cb0f..1ca50e7 100644 --- a/parseany_test.go +++ b/parseany_test.go @@ -84,11 +84,10 @@ func TestParse(t *testing.T) { //u.Debug(fmt.Sprintf("%v", ts.In(time.UTC)), " ---- ", ts) assert.T(t, "2006-01-02 15:04:05 +0000 MST" == fmt.Sprintf("%v", ts)) - // Wat? Go can't parse a date that it supplies a format for? - // TODO: fixme - //ts, err = ParseAny("Mon, 02 Jan 2006 15:04:05 -0700") - //u.Debug(ts.In(time.UTC).Unix(), ts.In(time.UTC)) - //assert.T(t, "2006-01-02 15:04:05 +0000 UTC" == fmt.Sprintf("%v", ts.In(time.UTC))) + // Golang Native Format + ts, err = ParseAny("2015-02-18 00:12:00 +0000 UTC") + assert.Tf(t, err == nil, "%v", err) + assert.T(t, "2015-02-18 00:12:00 +0000 UTC" == fmt.Sprintf("%v", ts.In(time.UTC))) //--------------------------------------------- // mm/dd/yyyy ?