1. 获取当前时间戳
常用的获取当前时间戳的有:
time.Now().Unix()time.Now().UnixNano()time.Now().UnixNano()/1e6
完整示例如下:
package main
import (
"fmt"
"time"
)
func main() {
// 10 位时间戳(秒)
timestamp := time.Now().Unix()
// 19 位时间戳(纳秒)
timestampNano := time.Now().UnixNano()
// 13 位时间戳(毫秒)
timestampMillisecond := timestampNano / 1e6
fmt.Printf("时间戳(秒):%v\n", timestamp)
fmt.Printf("时间戳(纳秒):%v\n", timestampNano)
fmt.Printf("时间戳(毫秒):%v\n", timestampMillisecond)
fmt.Printf("时间戳(纳秒转换为秒):%v\n", timestampNano/1e9)
// 输出如下
// 时间戳(秒):1606361139
// 时间戳(纳秒):1606361139759851593
// 时间戳(毫秒):1606361139759
// 时间戳(纳秒转换为秒):1606361139
}
2. 获取格式化时间
time.Now()time.Date()time.Now()2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767time.Date()time.Date(2020, time.October, 1, 8, 0, 0, 0, time.Local)
完整示例代码:
package main
import (
"fmt"
"time"
)
func main() {
nowTime := time.Now()
// 获取具体年月日
year := time.Now().Year()
month := time.Now().Month()
day := time.Now().Day()
hour := time.Now().Hour()
minute := time.Now().Minute()
second := time.Now().Second()
nanosecond := time.Now().Nanosecond()
fmt.Println(nowTime)
fmt.Println(year, month, day, hour, minute, second, nanosecond)
// 如下毫秒 = 0 精确到秒
currentDate := time.Date(year, month, day, hour, minute, second, 0, time.Local)
fmt.Println(currentDate)
// 输出如下
// 2020-11-26 11:07:17.088857195 +0800 CST m=+0.000040767
// 2020 November 26 11 7 17 88905240
// 2020-11-26 11:07:17 +0800 CST
}
yyyy-MM-dd HH:mm:ss
// 方式一:
timeFORMat := time.Now().Format("2006-01-02 15:04:05")
fmt.Println(timeFormat)
// 方式二:先获取当前时间戳
timestamp := time.Now().Unix()
// 再格式化时间戳转化为日期
datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
fmt.Println(datetime)
// 输出
// 2020-11-26 11:29:11
// 2020-11-26 11:29:11
4. 字符串与时间的相互转换
4.1 时间戳转时间字符串 (int64 ==> string)
timestamp = 1606361139
// 时间戳转化为日期
datetime = time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
fmt.Println(datetime)
// 2020-11-26 11:25:39
4.2 时间字符串转时间格式 (string ==> time.Time)
datetime = "2020-11-26 11:25:39"
formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
fmt.Println(formatTime)
// 2020-11-26 11:25:39 +0000 UTC
4.3 时间字符串转时间戳 (string ==> int64)
datetime = "2020-11-26 11:25:39"
formatTime, _ := time.Parse("2006-01-02 15:04:05", datetime)
// 再上一步的基础上使用 Unix() 函数
fmt.Println(formatTime.Unix())
// 1606389939