Updating docs, add a few new features to utc.

This commit is contained in:
Kyle Isom 2016-06-14 15:22:38 -07:00
parent a0e48cd55b
commit 57e31bfcf4
2 changed files with 42 additions and 15 deletions

View File

@ -1,18 +1,35 @@
utc: convert times to UTC utc: convert times to UTC
Usage: utc [-f format] [-u] [-h] [-z zone] [time(s)...]
utc converts times to UTC. If no arguments are provided, prints the utc converts times to UTC. If no arguments are provided, prints the
current time in UTC. If the only time provided is "-", reads current time in UTC.
newline-separated timestamps from standard input.
Flags: Flags:
-f format Go timezone format. See the Go documentation -f format Go timestamp format for input times. See the Go docs
(e.g. https://golang.org/pkg/time/#pkg-constants) (e.g. https://golang.org/pkg/time/#pkg-constants)
for an explanation of this format. for an explanation of this format.
Default value: 2006-01-02 15:04
-h Print a help message.
-o format Go timestamp format for outputting times. Uses the
same format as the '-f' argument; it defaults to
the same value as the '-f' argument.
-u Timestamps are in UTC format and should be converted
to the timezone specified by the -z argument (which
defaults to 'Local'). Note that this isn't particularly
useful with no arguments.
-z zone Text form of the time zone; this can be in short -z zone Text form of the time zone; this can be in short
time zone abbreviation (e.g. MST) or a location time zone abbreviation (e.g. MST) or a location
(e.g. America/Los_Angeles). This has no effect (e.g. America/Los_Angeles). This has no effect when
when printing the current time. printing the current time.
Default value: Local
Examples (note that the examples are done in the America/Los_Angeles / Examples (note that the examples are done in the America/Los_Angeles /
PST8PDT time zone): PST8PDT time zone):
@ -41,8 +58,9 @@ PST8PDT time zone):
PST8PDT): PST8PDT):
$ utc -u -z EST '2016-06-14 21:30' $ utc -u -z EST '2016-06-14 21:30'
2016-06-14 21:30 = 2016-06-14 16:30 2016-06-14 21:30 = 2016-06-14 16:30
+ Using a different output format:
$ utc -o '2006-01-02T15:03:04MST' '2016-06-14 21:30'
2016-06-14 21:30 = 2016-06-15T04:04:30UTC

View File

@ -10,21 +10,23 @@ import (
) )
var ( var (
format = "2006-01-02 15:04" // Format that will be used for times. format = "2006-01-02 15:04" // Format that will be used for times.
tz = "Local" // String descriptor for timezone. outFormat = format // Output format.
fromLoc *time.Location // Go time.Location for the named timezone. tz = "Local" // String descriptor for timezone.
toLoc *time.Location // Go time.Location for output timezone. fromLoc *time.Location // Go time.Location for the named timezone.
toLoc *time.Location // Go time.Location for output timezone.
) )
func usage(w io.Writer) { func usage(w io.Writer) {
fmt.Fprintf(w, `Usage: utc [-f format] [-u] [-h] [-z zone] [time(s)...] fmt.Fprintf(w, `Usage: utc [-f format] [-u] [-h] [-z zone] [time(s)...]
utc converts times to UTC. If no arguments are provided, prints the utc converts times to UTC. If no arguments are provided, prints the
current time in UTC. current time in UTC. If the only time provided is "-", reads newline-
separated timestamps from standard input.
Flags: Flags:
-f format Go timezone format. See the Go documentation -f format Go timestamp format for input times. See the Go docs
(e.g. https://golang.org/pkg/time/#pkg-constants) (e.g. https://golang.org/pkg/time/#pkg-constants)
for an explanation of this format. for an explanation of this format.
@ -32,6 +34,10 @@ Flags:
-h Print this help message. -h Print this help message.
-o format Go timestamp format for outputting times. Uses the
same format as the '-f' argument; it defaults to
the same value as the '-f' argument.
-u Timestamps are in UTC format and should be converted -u Timestamps are in UTC format and should be converted
to the timezone specified by the -z argument (which to the timezone specified by the -z argument (which
defaults to '%s'). Note that this isn't particularly defaults to '%s'). Note that this isn't particularly
@ -71,7 +77,9 @@ PST8PDT time zone):
PST8PDT): PST8PDT):
$ utc -u -z EST '2016-06-14 21:30' $ utc -u -z EST '2016-06-14 21:30'
2016-06-14 21:30 = 2016-06-14 16:30 2016-06-14 21:30 = 2016-06-14 16:30
+ Using a different output format:
$ utc -o '2006-01-02T15:03:04MST' '2016-06-14 21:30'
2016-06-14 21:30 = 2016-06-15T04:04:30UTC
`, format, tz, tz) `, format, tz, tz)
} }
@ -82,6 +90,7 @@ func init() {
flag.Usage = func() { usage(os.Stderr) } flag.Usage = func() { usage(os.Stderr) }
flag.StringVar(&format, "f", format, "time format") flag.StringVar(&format, "f", format, "time format")
flag.BoolVar(&help, "h", false, "print usage information") flag.BoolVar(&help, "h", false, "print usage information")
flag.StringVar(&outFormat, "o", outFormat, "output time format")
flag.BoolVar(&utc, "u", false, "timestamps are in UTC format") flag.BoolVar(&utc, "u", false, "timestamps are in UTC format")
flag.StringVar(&tz, "z", tz, "time zone to convert from; if blank, the local timezone is used") flag.StringVar(&tz, "z", tz, "time zone to convert from; if blank, the local timezone is used")
@ -114,7 +123,7 @@ func init() {
} }
func showTime(t time.Time) { func showTime(t time.Time) {
fmt.Printf("%s = %s\n", t.Format(format), t.In(toLoc).Format(format)) fmt.Printf("%s = %s\n", t.Format(format), t.In(toLoc).Format(outFormat))
} }
func dumpTimes(times []string) bool { func dumpTimes(times []string) bool {