tools

Miscellaneous software tools
git clone http://git.omkov.net/tools
Log | Tree | Refs | Download

tools/src/unixtime/main.go (45 lines, 701 B) -rw-r--r-- file download

d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
0
package main
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
1
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
2
import (
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
3
	"fmt"
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
4
	"log"
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
5
	"os"
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
6
	"strconv"
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
7
	"time"
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
8
)
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
9
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
10
func main() {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
11
	if len(os.Args) < 2 {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
12
		fmt.Println("Usage: unixtime timestamp...")
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
13
		os.Exit(-1)
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
14
	}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
15
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
16
	for _, a := range os.Args[1:] {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
17
		fmt.Println(a, "->", unixtime(a))
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
18
	}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
19
}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
20
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
21
func unixtime(s string) string {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
22
	if isUnixTime(s) {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
23
		ns, _ := strconv.ParseInt(s, 10, 64)
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
24
		t := time.Unix(0, ns).UTC()
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
25
		return t.Format("2006-01-02T15:04:05.999999Z")
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
26
	} else {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
27
		t, err := time.Parse("2006-01-02T15:04:05.999999Z", s)
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
28
		if err != nil {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
29
			log.Fatalln(err.Error())
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
30
		}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
31
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
32
		return strconv.FormatInt(t.UnixNano(), 10)
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
33
	}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
34
}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
35
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
36
func isUnixTime(s string) bool {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
37
	for _, r := range s {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
38
		if r < '0' || r > '9' {
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
39
			return false
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
40
		}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
41
	}
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
42
	return true
d88ffe6 Jakob Wakeling 2024-05-23 12:42:30
43
}
44