mirror of
https://github.com/araddon/dateparse.git
synced 2024-11-10 11:51:54 +08:00
4/15/06 22:05 format closes #30
This commit is contained in:
parent
ca7e753bd1
commit
3007e2ec4a
@ -56,13 +56,13 @@ func main() {
|
|||||||
|
|
||||||
for name, parser := range parsers {
|
for name, parser := range parsers {
|
||||||
time.Local = nil
|
time.Local = nil
|
||||||
table.AddRow(name, "time.Local = nil", parser(datestr, nil), parser(datestr, nil).In(time.UTC))
|
table.AddRow(name, "time.Local = nil", parser(datestr, nil, false), parser(datestr, nil, true))
|
||||||
if timezone != "" {
|
if timezone != "" {
|
||||||
time.Local = loc
|
time.Local = loc
|
||||||
table.AddRow(name, "time.Local = timezone arg", parser(datestr, loc), parser(datestr, loc).In(time.UTC))
|
table.AddRow(name, "time.Local = timezone arg", parser(datestr, loc, false), parser(datestr, loc, true))
|
||||||
}
|
}
|
||||||
time.Local = time.UTC
|
time.Local = time.UTC
|
||||||
table.AddRow(name, "time.Local = time.UTC", parser(datestr, time.UTC), parser(datestr, time.UTC).In(time.UTC))
|
table.AddRow(name, "time.Local = time.UTC", parser(datestr, time.UTC, false), parser(datestr, time.UTC, true))
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(table.Render())
|
fmt.Println(table.Render())
|
||||||
@ -72,20 +72,38 @@ func stuff() (string, string) {
|
|||||||
return "more", "stuff"
|
return "more", "stuff"
|
||||||
}
|
}
|
||||||
|
|
||||||
type parser func(datestr string, loc *time.Location) time.Time
|
type parser func(datestr string, loc *time.Location, utc bool) string
|
||||||
|
|
||||||
func parseLocal(datestr string, loc *time.Location) time.Time {
|
func parseLocal(datestr string, loc *time.Location, utc bool) string {
|
||||||
time.Local = loc
|
time.Local = loc
|
||||||
t, _ := dateparse.ParseLocal(datestr)
|
t, err := dateparse.ParseLocal(datestr)
|
||||||
return t
|
if err != nil {
|
||||||
|
return err.Error()
|
||||||
|
}
|
||||||
|
if utc {
|
||||||
|
return t.In(time.UTC).String()
|
||||||
|
}
|
||||||
|
return t.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseIn(datestr string, loc *time.Location) time.Time {
|
func parseIn(datestr string, loc *time.Location, utc bool) string {
|
||||||
t, _ := dateparse.ParseIn(datestr, loc)
|
t, err := dateparse.ParseIn(datestr, loc)
|
||||||
return t
|
if err != nil {
|
||||||
|
return err.Error()
|
||||||
|
}
|
||||||
|
if utc {
|
||||||
|
return t.In(time.UTC).String()
|
||||||
|
}
|
||||||
|
return t.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseAny(datestr string, loc *time.Location) time.Time {
|
func parseAny(datestr string, loc *time.Location, utc bool) string {
|
||||||
t, _ := dateparse.ParseAny(datestr)
|
t, err := dateparse.ParseAny(datestr)
|
||||||
return t
|
if err != nil {
|
||||||
|
return err.Error()
|
||||||
|
}
|
||||||
|
if utc {
|
||||||
|
return t.In(time.UTC).String()
|
||||||
|
}
|
||||||
|
return t.String()
|
||||||
}
|
}
|
||||||
|
@ -374,6 +374,7 @@ iterRunes:
|
|||||||
// 04/2/2014 03:00:37
|
// 04/2/2014 03:00:37
|
||||||
// 3/1/2012 10:11:59
|
// 3/1/2012 10:11:59
|
||||||
// 4/8/2014 22:05
|
// 4/8/2014 22:05
|
||||||
|
// 4/8/14 22:05
|
||||||
switch r {
|
switch r {
|
||||||
case ':':
|
case ':':
|
||||||
state = stateDigitSlashWSColon
|
state = stateDigitSlashWSColon
|
||||||
@ -384,6 +385,7 @@ iterRunes:
|
|||||||
// 04/2/2014 03:00:37
|
// 04/2/2014 03:00:37
|
||||||
// 3/1/2012 10:11:59
|
// 3/1/2012 10:11:59
|
||||||
// 4/8/2014 22:05
|
// 4/8/2014 22:05
|
||||||
|
// 4/8/14 22:05
|
||||||
// 3/1/2012 10:11:59 AM
|
// 3/1/2012 10:11:59 AM
|
||||||
switch r {
|
switch r {
|
||||||
case ':':
|
case ':':
|
||||||
@ -397,6 +399,7 @@ iterRunes:
|
|||||||
// 04/2/2014 03:00:37
|
// 04/2/2014 03:00:37
|
||||||
// 3/1/2012 10:11:59
|
// 3/1/2012 10:11:59
|
||||||
// 4/8/2014 22:05
|
// 4/8/2014 22:05
|
||||||
|
// 4/8/14 22:05
|
||||||
// 3/1/2012 10:11:59 AM
|
// 3/1/2012 10:11:59 AM
|
||||||
switch r {
|
switch r {
|
||||||
case 'A', 'P':
|
case 'A', 'P':
|
||||||
@ -773,7 +776,7 @@ iterRunes:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for _, layout := range []string{"01/02/2006 15:04", "01/2/2006 15:04", "1/02/2006 15:04", "1/2/2006 15:04"} {
|
for _, layout := range []string{"01/02/2006 15:04", "01/2/2006 15:04", "1/02/2006 15:04", "1/2/2006 15:04", "1/2/06 15:04", "01/02/06 15:04"} {
|
||||||
if t, err := parse(layout, datestr, loc); err == nil {
|
if t, err := parse(layout, datestr, loc); err == nil {
|
||||||
return t, nil
|
return t, nil
|
||||||
}
|
}
|
||||||
@ -810,6 +813,7 @@ iterRunes:
|
|||||||
// 3/1/2012 10:11:59
|
// 3/1/2012 10:11:59
|
||||||
// 03/1/2012 10:11:59
|
// 03/1/2012 10:11:59
|
||||||
// 3/01/2012 10:11:59
|
// 3/01/2012 10:11:59
|
||||||
|
// 4/8/14 22:05
|
||||||
if firstSlash == 4 {
|
if firstSlash == 4 {
|
||||||
for _, layout := range []string{"2006/01/02 15:04:05", "2006/1/02 15:04:05", "2006/01/2 15:04:05", "2006/1/2 15:04:05"} {
|
for _, layout := range []string{"2006/01/02 15:04:05", "2006/1/02 15:04:05", "2006/01/2 15:04:05", "2006/1/2 15:04:05"} {
|
||||||
if t, err := parse(layout, datestr, loc); err == nil {
|
if t, err := parse(layout, datestr, loc); err == nil {
|
||||||
|
@ -199,10 +199,18 @@ func TestParse(t *testing.T) {
|
|||||||
|
|
||||||
ts = MustParse("4/8/2014 22:05")
|
ts = MustParse("4/8/2014 22:05")
|
||||||
assert.Equal(t, "2014-04-08 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
assert.Equal(t, "2014-04-08 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
ts = MustParse("4/18/2014 22:05")
|
||||||
|
assert.Equal(t, "2014-04-18 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
ts = MustParse("04/08/2014 22:05")
|
ts = MustParse("04/08/2014 22:05")
|
||||||
assert.Equal(t, "2014-04-08 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
assert.Equal(t, "2014-04-08 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
|
||||||
|
ts = MustParse("4/8/14 22:05")
|
||||||
|
assert.Equal(t, "2014-04-08 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
ts = MustParse("4/18/14 22:05")
|
||||||
|
assert.Equal(t, "2014-04-18 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
ts = MustParse("10/18/14 22:05")
|
||||||
|
assert.Equal(t, "2014-10-18 22:05:00 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
|
||||||
ts = MustParse("04/2/2014 4:00:51")
|
ts = MustParse("04/2/2014 4:00:51")
|
||||||
assert.Equal(t, "2014-04-02 04:00:51 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
assert.Equal(t, "2014-04-02 04:00:51 +0000 UTC", fmt.Sprintf("%v", ts.In(time.UTC)))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user