strtime/main.go

36 lines
679 B
Go

package main
import (
"flag"
"fmt"
"time"
"github.com/lestrrat-go/strftime"
)
func main() {
in := flag.String("in", "2006-01-02T15:04:05", "input layout")
out := flag.String("out", "%s", "output layout (or strftime)")
flag.Parse()
formatter := func(t time.Time) string {
return t.Format(*out)
}
if pattern, err := strftime.New(
*out,
strftime.WithUnixSeconds('s'),
strftime.WithMilliseconds('L'),
); err == nil {
formatter = func(t time.Time) string {
return pattern.FormatString(t)
}
}
for _, flag := range flag.Args() {
t, err := time.ParseInLocation(*in, flag, time.Local)
if err != nil {
panic(err)
}
fmt.Println(formatter(t))
}
}