有时候需要时间和时间戳之间进行转换,以及获取当前时间和时间戳。
虽然功能很小,但是也不想每次去网页上搜一搜这么麻烦,因此写了一个小工具。
源码鉴赏:
|
package main |
|
|
|
import ( |
|
"fmt" |
|
"os" |
|
"strconv" |
|
"strings" |
|
"time" |
|
) |
|
|
|
func main() { |
|
const timeLayout = "\"2006-01-02 15:04:05\" \"20060102150405\"" |
|
var sData []string |
|
switch len(os.Args) { |
|
case 1: |
|
t := time.Now() |
|
fmt.Println(t.Unix(), t.Format(timeLayout)) |
|
return |
|
case 2: |
|
data := strings.TrimSpace(os.Args[1]) |
|
unix, err := strconv.ParseInt(data, 10, 64) |
|
if err == nil { |
|
// 转换这种: stamp 1618624877 |
|
fmt.Println(time.Unix(unix, 0).Format(timeLayout)) |
|
return |
|
} |
|
// 转换这种: stamp "2006-01-02 15:04:05" |
|
sData = strings.Fields(data) |
|
case 3: |
|
// 转换这种: stamp 2006-01-02 15:04:05 |
|
sData = []string{os.Args[1], os.Args[2]} |
|
default: |
|
fmt.Printf("usage:%s or %s [2006-01-02 15:04:05|1136185445]\n", os.Args[0], os.Args[0]) |
|
return |
|
} |
|
|
|
var ymd, hms [3]int // 计算年月日 |
|
for i, v := range strings.Split(strings.TrimSpace(sData[0]), "-") { |
|
n, err := strconv.Atoi(v) |
|
if err != nil { |
|
panic(err) |
|
} |
|
ymd[i] = n |
|
} |
|
if len(sData) == 2 { // 计算时分秒 |
|
for i, v := range strings.Split(strings.TrimSpace(sData[1]), ":") { |
|
n, err := strconv.Atoi(v) |
|
if err != nil { |
|
panic(err) |
|
} |
|
hms[i] = n |
|
} |
|
} |
|
t := time.Date(ymd[0], time.Month(ymd[1]), ymd[2], hms[0], hms[1], hms[2], 0, time.Local) |
|
fmt.Println(t.Unix()) |
|
} |
使用方法:
copy
|
不带参数,获取当前时间戳和时间 |
|
c:\>stamp |
|
1618626612 "2021-04-17 10:30:12" "20210417103012" |
|
带一个参数,包含完整年月日,时分秒,返回时间戳 |
|
c:\>stamp "2021-04-17 11:22:41" |
|
1618629761 |
|
带两个参数,第一个为年月日,第二个为时分秒 |
|
c:\>stamp 2021-04-17 12:22:41 |
|
1618633361 |
|
只传一串数字会被当做时间戳,返回对应时间 |
|
c:\>stamp 1618693361 |
|
"2021-04-18 05:02:41" "20210418050241" |
|
直传年月,注意直数字会被当做时间戳转换 |
|
c:\>stamp 2021-4 |
|
1617120000 |
|
只传年月日 |
|
c:\>stamp 2021-4-18 |
|
1618675200 |
|
直传年月日,时 |
|
c:\>stamp 2021-4-18 14 |
|
1618725600 |
|
直传年月日,时分 |
|
c:\>stamp 2021-4-18 14:45 |
|
1618728300 |
|
直传年月日,时分秒 |
|
c:\>stamp 2021-4-18 14:45:32 |
|
1618728332 |
把这个小工具记录一下,后面需要用的时候可以方便点,提高效率。