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)) } }