36 lines
679 B
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))
|
|
}
|
|
}
|