Update dateparse helper cli doc

This commit is contained in:
Aaron Raddon 2017-07-26 22:15:09 -07:00
parent 6e540a639f
commit ec2a23bade
2 changed files with 111 additions and 38 deletions

View File

@ -10,36 +10,102 @@ Simple CLI to test out dateparse.
# which method you use to parse # which method you use to parse
$ dateparse --timezone="America/Denver" "2017-07-19 03:21:00" $ dateparse --timezone="America/Denver" "2017-07-19 03:21:00"
+------------+---------------------+---------------+----------+-------------------------------+
| method | Input | Zone Source | Timezone | Parsed, and Output as %v | Your Current time.Local zone is PDT
+------------+---------------------+---------------+----------+-------------------------------+
| ParseAny | 2017-07-19 03:21:00 | Local Default | PDT | 2017-07-19 03:21:00 +0000 UTC | +------------+---------------------+---------------------------+-------------------------------+-------------------------------+
| ParseAny | 2017-07-19 03:21:00 | timezone arg | PDT | 2017-07-19 03:21:00 +0000 UTC | | method | Input | Zone Source | Parsed: %v | Parsed: t.In(time.UTC) |
| ParseAny | 2017-07-19 03:21:00 | UTC | UTC | 2017-07-19 03:21:00 +0000 UTC | +------------+---------------------+---------------------------+-------------------------------+-------------------------------+
| ParseIn | 2017-07-19 03:21:00 | Local Default | PDT | 2017-07-19 03:21:00 +0000 UTC | | ParseAny | 2017-07-19 03:21:00 | time.Local = nil | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | 2017-07-19 03:21:00 | timezone arg | PDT | 2017-07-19 03:21:00 -0600 MDT | | ParseAny | 2017-07-19 03:21:00 | time.Local = timezone arg | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | 2017-07-19 03:21:00 | UTC | UTC | 2017-07-19 03:21:00 +0000 UTC | | ParseAny | 2017-07-19 03:21:00 | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:00 | Local Default | PDT | 2017-07-19 03:21:00 +0000 UTC | | ParseIn | 2017-07-19 03:21:00 | time.Local = nil | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:00 | timezone arg | PDT | 2017-07-19 03:21:00 -0600 MDT | | ParseIn | 2017-07-19 03:21:00 | time.Local = timezone arg | 2017-07-19 03:21:00 -0600 MDT | 2017-07-19 09:21:00 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:00 | UTC | UTC | 2017-07-19 03:21:00 +0000 UTC | | ParseIn | 2017-07-19 03:21:00 | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
+------------+---------------------+---------------+----------+-------------------------------+ | ParseLocal | 2017-07-19 03:21:00 | time.Local = nil | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:00 | time.Local = timezone arg | 2017-07-19 03:21:00 -0600 MDT | 2017-07-19 09:21:00 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:00 | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 UTC | 2017-07-19 03:21:00 +0000 UTC |
+------------+---------------------+---------------------------+-------------------------------+-------------------------------+
# Note on this one that the outputed zone is always UTC/0 offset as opposed to above # Note on this one that the outputed zone is always UTC/0 offset as opposed to above
$ dateparse --timezone="America/Denver" "2017-07-19 03:21:51+00:00" $ dateparse --timezone="America/Denver" "2017-07-19 03:21:51+00:00"
+------------+---------------------------+---------------+----------+---------------------------------+
| method | Input | Zone Source | Timezone | Parsed, and Output as %v | Your Current time.Local zone is PDT
+------------+---------------------------+---------------+----------+---------------------------------+
| ParseAny | 2017-07-19 03:21:51+00:00 | Local Default | PDT | 2017-07-19 03:21:51 +0000 UTC | +------------+---------------------------+---------------------------+---------------------------------+-------------------------------+
| ParseAny | 2017-07-19 03:21:51+00:00 | timezone arg | PDT | 2017-07-19 03:21:51 +0000 UTC | | method | Input | Zone Source | Parsed: %v | Parsed: t.In(time.UTC) |
| ParseAny | 2017-07-19 03:21:51+00:00 | UTC | UTC | 2017-07-19 03:21:51 +0000 UTC | +------------+---------------------------+---------------------------+---------------------------------+-------------------------------+
| ParseIn | 2017-07-19 03:21:51+00:00 | Local Default | PDT | 2017-07-19 03:21:51 +0000 UTC | | ParseAny | 2017-07-19 03:21:51+00:00 | time.Local = nil | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
| ParseIn | 2017-07-19 03:21:51+00:00 | timezone arg | PDT | 2017-07-19 03:21:51 +0000 +0000 | | ParseAny | 2017-07-19 03:21:51+00:00 | time.Local = timezone arg | 2017-07-19 03:21:51 +0000 +0000 | 2017-07-19 03:21:51 +0000 UTC |
| ParseIn | 2017-07-19 03:21:51+00:00 | UTC | UTC | 2017-07-19 03:21:51 +0000 UTC | | ParseAny | 2017-07-19 03:21:51+00:00 | time.Local = time.UTC | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:51+00:00 | Local Default | PDT | 2017-07-19 03:21:51 +0000 UTC | | ParseIn | 2017-07-19 03:21:51+00:00 | time.Local = nil | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:51+00:00 | timezone arg | PDT | 2017-07-19 03:21:51 +0000 +0000 | | ParseIn | 2017-07-19 03:21:51+00:00 | time.Local = timezone arg | 2017-07-19 03:21:51 +0000 +0000 | 2017-07-19 03:21:51 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:51+00:00 | UTC | UTC | 2017-07-19 03:21:51 +0000 UTC | | ParseIn | 2017-07-19 03:21:51+00:00 | time.Local = time.UTC | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
+------------+---------------------------+---------------+----------+---------------------------------+ | ParseLocal | 2017-07-19 03:21:51+00:00 | time.Local = nil | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:51+00:00 | time.Local = timezone arg | 2017-07-19 03:21:51 +0000 +0000 | 2017-07-19 03:21:51 +0000 UTC |
| ParseLocal | 2017-07-19 03:21:51+00:00 | time.Local = time.UTC | 2017-07-19 03:21:51 +0000 UTC | 2017-07-19 03:21:51 +0000 UTC |
+------------+---------------------------+---------------------------+---------------------------------+-------------------------------+
$ dateparse --timezone="America/Denver" "Monday, 19-Jul-17 03:21:00 MDT"
Your Current time.Local zone is PDT
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| method | Input | Zone Source | Parsed: %v | Parsed: t.In(time.UTC) |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 -0600 MDT | 2017-07-19 09:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 -0600 MDT | 2017-07-19 09:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 -0600 MDT | 2017-07-19 09:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
# pass in a wrong timezone "MST" (should be MDT)
$ dateparse --timezone="America/Denver" "Monday, 19-Jul-17 03:21:00 MST"
Your Current time.Local zone is PDT
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| method | Input | Zone Source | Parsed: %v | Parsed: t.In(time.UTC) |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| ParseAny | Monday, 19-Jul-17 03:21:00 MST | time.Local = nil | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MST | time.Local = timezone arg | 2017-07-19 04:21:00 -0600 MDT | 2017-07-19 10:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MST | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MST | time.Local = nil | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MST | time.Local = timezone arg | 2017-07-19 04:21:00 -0600 MDT | 2017-07-19 10:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MST | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MST | time.Local = nil | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MST | time.Local = timezone arg | 2017-07-19 04:21:00 -0600 MDT | 2017-07-19 10:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MST | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MST | 2017-07-19 03:21:00 +0000 UTC |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
# note, we are using America/New_York which doesn't recognize MDT so essentially ignores it
$ dateparse --timezone="America/New_York" "Monday, 19-Jul-17 03:21:00 MDT"
Your Current time.Local zone is PDT
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| method | Input | Zone Source | Parsed: %v | Parsed: t.In(time.UTC) |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseIn | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseLocal | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = nil | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = timezone arg | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
| ParseAny | Monday, 19-Jul-17 03:21:00 MDT | time.Local = time.UTC | 2017-07-19 03:21:00 +0000 MDT | 2017-07-19 03:21:00 +0000 UTC |
+------------+--------------------------------+---------------------------+-------------------------------+-------------------------------+
``` ```

View File

@ -41,9 +41,12 @@ func main() {
loc = l loc = l
} }
zonename, _ := time.Now().In(time.Local).Zone()
fmt.Printf("\nYour Current time.Local zone is %v\n\n", zonename)
table := termtables.CreateTable() table := termtables.CreateTable()
table.AddHeaders("method", "Input", "Zone Source", "Timezone", "Parsed, and Output as %v") table.AddHeaders("method", "Input", "Zone Source", "Parsed", "Parsed: t.In(time.UTC)")
parsers := map[string]parser{ parsers := map[string]parser{
"ParseAny": parseAny, "ParseAny": parseAny,
@ -51,34 +54,38 @@ func main() {
"ParseLocal": parseLocal, "ParseLocal": parseLocal,
} }
zonename, _ := time.Now().In(time.Local).Zone()
for name, parser := range parsers { for name, parser := range parsers {
time.Local = nil time.Local = nil
table.AddRow(name, datestr, "Local Default", zonename, parser(datestr, nil)) table.AddRow(name, datestr, "time.Local = nil", parser(datestr, nil), parser(datestr, nil).In(time.UTC))
if timezone != "" { if timezone != "" {
table.AddRow(name, datestr, "timezone arg", zonename, parser(datestr, loc)) time.Local = loc
table.AddRow(name, datestr, "time.Local = timezone arg", parser(datestr, loc), parser(datestr, loc).In(time.UTC))
} }
time.Local = time.UTC time.Local = time.UTC
table.AddRow(name, datestr, "UTC", "UTC", parser(datestr, time.UTC)) table.AddRow(name, datestr, "time.Local = time.UTC", parser(datestr, time.UTC), parser(datestr, time.UTC).In(time.UTC))
} }
fmt.Println(table.Render()) fmt.Println(table.Render())
} }
type parser func(datestr string, loc *time.Location) string func stuff() (string, string) {
return "more", "stuff"
}
func parseLocal(datestr string, loc *time.Location) string { type parser func(datestr string, loc *time.Location) time.Time
func parseLocal(datestr string, loc *time.Location) time.Time {
time.Local = loc time.Local = loc
t, _ := dateparse.ParseLocal(datestr) t, _ := dateparse.ParseLocal(datestr)
return t.String() return t
} }
func parseIn(datestr string, loc *time.Location) string { func parseIn(datestr string, loc *time.Location) time.Time {
t, _ := dateparse.ParseIn(datestr, loc) t, _ := dateparse.ParseIn(datestr, loc)
return t.String() return t
} }
func parseAny(datestr string, loc *time.Location) string { func parseAny(datestr string, loc *time.Location) time.Time {
t, _ := dateparse.ParseAny(datestr) t, _ := dateparse.ParseAny(datestr)
return t.String() return t
} }