Golang 实现时间戳和时间的转化

何为时间戳:时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息 。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在 。
时间戳格式种类:

  • 10位数的时间戳是以 秒 为单位,如:1530027865
  • 13位数的时间戳是以 毫秒 为单位,如:1530027865231
  • 19位数的时间戳是以 纳秒 为单位,如:1530027865231834600
代码【Golang 实现时间戳和时间的转化】/*@Time : 2022/11/8 14:52@Author : zic@File : time@Software: GoLand@blog : https://www.cnblogs.com/zichliang*/package mainimport ( "fmt" "strconv" "time")func main() { //获取当前时间 并格式化 t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05")) //获取当前时间戳 t = time.Now() fmt.Println(t.Unix()) //1531293019 //时间戳转换为时间 tm := time.Unix(1667889978, 0) fmt.Println(tm.Format("2006-01-02 15:04:05")) //时间转换为时间戳 timeUnix, _ := time.Parse("2006-01-02 15:04:05", "2022-11-08 14:46:18") fmt.Println(timeUnix.Unix()) // 13位时间戳转换成时间 data, _ := strconv.ParseInt(strconv.Itoa(1667888972000), 10, 64) nowTime := time.Unix(data/1000, 0).Format("2006-01-02 15:04:05") fmt.Println(nowTime) //2022-11-08 14:29:32 // (标准时间 2022-11-08 14:29:32 )时间转13位时间戳 timeUnix, _ = time.Parse("2006-01-02 15:04:05", nowTime) fmt.Println(timeUnix.UnixNano() / 1e6) // 1667917772000 // 非标准时间 转13位时间戳 formatTime := "2022-11-08" ft, _ := time.Parse("2006-01-02", formatTime) fmt.Println((ft.UTC().Unix() - 8*3600) * 1000) // 10位就不用乘1000 其实感觉有更好的方法 ....}

    经验总结扩展阅读