mirror of
https://github.com/araddon/dateparse.git
synced 2026-02-05 02:24:53 +00:00
Code cleanup & code-coverage, doc from #120
This commit is contained in:
@@ -11,8 +11,8 @@ import (
|
||||
func TestOne(t *testing.T) {
|
||||
time.Local = time.UTC
|
||||
var ts time.Time
|
||||
ts = MustParse("Mon 30 Sep 2018 09:09:09 PM UTC")
|
||||
assert.Equal(t, "2018-09-30 21:09:09 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||
ts = MustParse("06/May/2008 15:04:05 -0700")
|
||||
assert.Equal(t, "2008-05-06 22:04:05 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||
}
|
||||
|
||||
type dateTest struct {
|
||||
@@ -222,6 +222,12 @@ var testInputs = []dateTest{
|
||||
{in: "2014/4/2 04:08:09 AM", out: "2014-04-02 04:08:09 +0000 UTC"},
|
||||
{in: "2014/04/02 04:08:09.123 AM", out: "2014-04-02 04:08:09.123 +0000 UTC"},
|
||||
{in: "2014/04/02 04:08:09.123 PM", out: "2014-04-02 16:08:09.123 +0000 UTC"},
|
||||
// dd/mon/yyyy:hh:mm:ss tz redis log?
|
||||
{in: "06/May/2008:08:11:17 -0700", out: "2008-05-06 15:11:17 +0000 UTC"},
|
||||
{in: "30/May/2008:08:11:17 -0700", out: "2008-05-30 15:11:17 +0000 UTC"},
|
||||
// dd/mon/yyy hh:mm:ss tz
|
||||
{in: "06/May/2008:08:11:17 -0700", out: "2008-05-06 15:11:17 +0000 UTC"},
|
||||
{in: "30/May/2008:08:11:17 -0700", out: "2008-05-30 15:11:17 +0000 UTC"},
|
||||
// yyyy-mm-dd
|
||||
{in: "2014-04-02", out: "2014-04-02 00:00:00 +0000 UTC"},
|
||||
{in: "2014-03-31", out: "2014-03-31 00:00:00 +0000 UTC"},
|
||||
@@ -388,6 +394,10 @@ var testInputs = []dateTest{
|
||||
{in: "2014", out: "2014-01-01 00:00:00 +0000 UTC"},
|
||||
{in: "20140601", out: "2014-06-01 00:00:00 +0000 UTC"},
|
||||
{in: "20140722105203", out: "2014-07-22 10:52:03 +0000 UTC"},
|
||||
// yymmdd hh:mm:yy mysql log https://github.com/araddon/dateparse/issues/119
|
||||
// 080313 05:21:55 mysqld started
|
||||
// 080313 5:21:55 InnoDB: Started; log sequence number 0 43655
|
||||
{in: "171113 14:14:20", out: "2017-11-13 14:14:20 +0000 UTC"},
|
||||
|
||||
// all digits: unix secs, ms etc
|
||||
{in: "1332151919", out: "2012-03-19 10:11:59 +0000 UTC"},
|
||||
@@ -501,40 +511,43 @@ func TestParseErrors(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
var testParseFormat = []dateTest{
|
||||
// errors
|
||||
{in: "3", err: true},
|
||||
{in: `{"hello"}`, err: true},
|
||||
{in: "2009-15-12T22:15Z", err: true},
|
||||
{in: "5,000-9,999", err: true},
|
||||
//
|
||||
{in: "06/May/2008 15:04:05 -0700", out: "02/Jan/2006 15:04:05 -0700"},
|
||||
{in: "06/May/2008:15:04:05 -0700", out: "02/Jan/2006:15:04:05 -0700"},
|
||||
{in: "14 May 2019 19:11:40.164", out: "02 Jan 2006 15:04:05.000"},
|
||||
{in: "171113 14:14:20", out: "060102 15:04:05"},
|
||||
|
||||
{in: "oct 7, 1970", out: "Jan 2, 2006"},
|
||||
{in: "sept. 7, 1970", out: "Jan. 2, 2006"},
|
||||
{in: "May 05, 2015, 05:05:07", out: "Jan 02, 2006, 15:04:05"},
|
||||
// 03 February 2013
|
||||
{in: "03 February 2013", out: "02 January 2006"},
|
||||
// 13:31:51.999 -07:00 MST
|
||||
// yyyy-mm-dd hh:mm:ss +00:00
|
||||
{in: "2012-08-03 18:31:59 +00:00", out: "2006-01-02 15:04:05 -07:00"},
|
||||
// yyyy-mm-dd hh:mm:ss +0000 TZ
|
||||
// Golang Native Format
|
||||
{in: "2012-08-03 18:31:59 +0000 UTC", out: "2006-01-02 15:04:05 -0700 UTC"},
|
||||
// yyyy-mm-dd hh:mm:ss TZ
|
||||
{in: "2012-08-03 18:31:59 UTC", out: "2006-01-02 15:04:05 UTC"},
|
||||
// yyyy-mm-ddThh:mm:ss-07:00
|
||||
{in: "2009-08-12T22:15:09-07:00", out: "2006-01-02T15:04:05-07:00"},
|
||||
// yyyy-mm-ddThh:mm:ss-0700
|
||||
{in: "2009-08-12T22:15:09-0700", out: "2006-01-02T15:04:05-0700"},
|
||||
// yyyy-mm-ddThh:mm:ssZ
|
||||
{in: "2009-08-12T22:15Z", out: "2006-01-02T15:04Z"},
|
||||
}
|
||||
|
||||
func TestParseLayout(t *testing.T) {
|
||||
// These tests are verifying that the layout returned by ParseFormat
|
||||
// are correct. Above tests correct parsing, this tests correct
|
||||
// re-usable formatting string
|
||||
var testParseFormat = []dateTest{
|
||||
// errors
|
||||
{in: "3", err: true},
|
||||
{in: `{"hello"}`, err: true},
|
||||
{in: "2009-15-12T22:15Z", err: true},
|
||||
{in: "5,000-9,999", err: true},
|
||||
//
|
||||
{in: "06/May/2008 15:04:05 -0700", out: "02/Jan/2006 15:04:05 -0700"},
|
||||
{in: "06/May/2008:15:04:05 -0700", out: "02/Jan/2006:15:04:05 -0700"},
|
||||
{in: "14 May 2019 19:11:40.164", out: "02 Jan 2006 15:04:05.000"},
|
||||
{in: "171113 14:14:20", out: "060102 15:04:05"},
|
||||
|
||||
{in: "oct 7, 1970", out: "Jan 2, 2006"},
|
||||
{in: "sept. 7, 1970", out: "Jan. 2, 2006"},
|
||||
{in: "May 05, 2015, 05:05:07", out: "Jan 02, 2006, 15:04:05"},
|
||||
// 03 February 2013
|
||||
{in: "03 February 2013", out: "02 January 2006"},
|
||||
// 13:31:51.999 -07:00 MST
|
||||
// yyyy-mm-dd hh:mm:ss +00:00
|
||||
{in: "2012-08-03 18:31:59 +00:00", out: "2006-01-02 15:04:05 -07:00"},
|
||||
// yyyy-mm-dd hh:mm:ss +0000 TZ
|
||||
// Golang Native Format
|
||||
{in: "2012-08-03 18:31:59 +0000 UTC", out: "2006-01-02 15:04:05 -0700 UTC"},
|
||||
// yyyy-mm-dd hh:mm:ss TZ
|
||||
{in: "2012-08-03 18:31:59 UTC", out: "2006-01-02 15:04:05 UTC"},
|
||||
// yyyy-mm-ddThh:mm:ss-07:00
|
||||
{in: "2009-08-12T22:15:09-07:00", out: "2006-01-02T15:04:05-07:00"},
|
||||
// yyyy-mm-ddThh:mm:ss-0700
|
||||
{in: "2009-08-12T22:15:09-0700", out: "2006-01-02T15:04:05-0700"},
|
||||
// yyyy-mm-ddThh:mm:ssZ
|
||||
{in: "2009-08-12T22:15Z", out: "2006-01-02T15:04Z"},
|
||||
}
|
||||
|
||||
for _, th := range testParseFormat {
|
||||
l, err := ParseFormat(th.in)
|
||||
if th.err {
|
||||
|
||||
Reference in New Issue
Block a user